Docker+Haproxy代理內網MongoDB數據庫TCP

1、問題

內網有一臺服務器安裝了MongoDB,因開發須要,要外網也能訪問。查詢資料後發現Haproxy能夠解決。方法是,用外網的服務器代理內網TCP。redis

2、環境

  • 外網IP:xxx.xxx.xxx.xxx
  • Mongo數據庫內網IP:192.168.100.3
  • Mongo數據庫端口27017

3、實現步驟

1.宿主機下載docker鏡像docker

docker pull haproxy

2.宿主機添加Haproxy配置文件(用於容器掛載)數據庫

mkdir /usr/local/etc/haproxy
vim /usr/local/etc/haproxy/haproxy.cfg
#配置的haproxy.cfg文件
global
    log         127.0.0.1 local2
    chroot      /usr/local/etc/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    #user        haproxy
    #group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /usr/local/etc/haproxy/stats
defaults
    log     global
    log 127.0.0.1 local3
    mode    http
    option tcplog
    option  dontlognull
    retries 10
    option redispatch
    maxconn         2000
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
listen  mongo
    bind xxx.xxx.xxx.xxx:27017
    mode tcp
    balance roundrobin
    server mongo1 192.168.100.2:27017

3.建立且運行容器vim

docker run -d --name haproxy --net=host -v /usr/local/etc/haproxy:/usr/local/etc/haproxy haproxy

4.在宿主機測試服務器

mongo 127.0.0.1:27017

donesocket

相關文章
相關標籤/搜索