码头版本:版本17.03.0-ce-mac2 (15654)
OS: macOS Sierra
我正在尝试建立一个HA环境使用坞-合成。关于拓扑可能是什么样子的快速概述是,我将至少有两个保持和have运行的实例,haproxy将出现在多个服务器的前面。但是,在这篇文章中,我只引用了一个保存实例、only和服务器来进行简化。
我现在遇到的问题是,我无法将流量定向到我分配给保存的虚拟IP地址。出于测试目的,在我的坞撰写文件中,我有一个客户端尝试使用VIP进行通信,这会导致连接拒绝错误。
dial tcp 192.168.99.120:80: getsockopt: connection refused但是,如果我直接接触到haproxy,就不会出现连接问题。此外,我可以直接从主机与haproxy通信,但不能保持。
我觉得这与网络如何在码头工作有关,但我对使用码头非常陌生,一直无法追踪这个问题。任何帮助都将不胜感激。
我的配置文件都包含在下面。
docker-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:7054keepalived.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
}
}来自我的mac的ifconfig有:
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发布于 2017-03-14 20:23:26
我不认为这将与Docker一起工作,因为它实际上使用隐藏的VM来运行您的Docker容器。如果您尝试使用主机网络而不是桥接网络,这应该可以在具有本机Docker支持的系统上工作。
我的建议是研究码头群模式(而不是独立的码头群)或库伯奈特模式,它们都提供扩展服务的机制,并通过一个地址提供跨服务的负载平衡。
https://stackoverflow.com/questions/42794725
复制相似问题