Keepalived / Haproxy泊坞窗撰写连接被拒绝

Docker版本:版本17.03.0-ce-mac2(15654)
操作系统: macOS Sierra

我正在尝试使用docker-compose来设置HA环境。 快速浏览一下拓扑可能的样子,我将至less有两个运行keepalived和haproxy的实例,haproxy将在多个服务器之前。 然而,在这篇文章中,我只提到了一个keepalived,haproxy和服务器的简化实例。

我现在遇到的问题是我无法将stream量引导到我分配给保活的虚拟IP地址。 为了在我的泊坞窗撰写文件的testing目的,我有一个客户端,试图使用VIP通信,并导致连接拒绝错误。

dial tcp 192.168.99.120:80: getsockopt: connection refused 

但是,如果我直接与haproxy联系,则不存在连接问题。 而且,我可以直接与主机通信,但不能保持通话。

我觉得这个和docker的networking工作有些关系,但是我对于使用docker还不是很了解,而且还没有能够追踪到这个问题。 任何帮助将非常感激。

我的configuration文件全部包含在下面。


泊坞窗,compose.yml:

 version: '2' services: keepalived1: image: neoassist/docker-keepalived:latest container_name: keepalived1 volumes: - "./keepalived.conf:/etc/keepalived/keepalived.conf" environment: - VIRTUAL_IP=192.168.99.120 - VIRTUAL_MASK=24 - VRID=1 - CHECK_IP=any - CHECK_PORT=80 - INTERFACE=eth0 entrypoint: sh -c 'sleep 4;/usr/bin/keepalived.sh' network_mode: "host" cap_drop: - NET_ADMIN privileged: true haproxy1: image: haproxy:latest container_name: haproxy1 ports: - 7054:7054 volumes: - "./haproxy1.cfg:/usr/local/etc/haproxy/haproxy.cfg" environment: - EXPOSE=7054 links: - fabric-ca-server1:fabric-ca-server1 fabric-ca-server1: image: hyperledger/fabric-ca container_name: fabric-ca-server1 ports: - 7051:7054 environment: - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server volumes: - "./fabric-ca-server:/etc/hyperledger/fabric-ca-server" command: sh -c "fabric-ca-server start -d -b admin:adminpw" admin-client: image: hyperledger/fabric-ca container_name: admin-client network_mode: "host" command: sh -c "sleep 14;fabric-ca-client enroll -d -u http://admin:adminpw@192.168.99.120" 

haproxy.cfg

 global maxconn 4096 defaults mode http maxconn 2000 timeout connect 5000 timeout client 50000 timeout server 50000 frontend server bind *:7054 mode tcp default_backend server_cluster backend server_cluster balance source mode tcp option tcpka server server1 fabric-ca-server1:7054 

keepalived.conf

 vrrp_script haproxy { script "pidof haproxy" interval 2 weight 2 } vrrp_instance haproxy_1 { virtual_router_id 1 advert_int 1 interface eth0 nopreempt state BACKUP virtual_ipaddress { 192.168.99.120/24 dev eth0 } track_script { haproxy } } 

ifconfig从我的mac有:

 vboxnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 0a:00:27:00:00:00 inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255 

我不认为这将适用于Mac版Docker,因为它实际上使用了一个虚拟机下的虚拟机来运行你的Docker容器。 这应该在具有本机Docker支持的系统上工作,如果您尝试使用主机networking而不是桥接networking。

我的build议是查看Docker群模式(而不是独立的Docker群)或者Kubernetes,它们都提供了扩展服务的机制,并通过一个地址提供负载平衡

Interesting Posts