我正致力于在一组IP地址上获取一组docker服务,并使其能够适应故障。我已经设置了keepalived以管理节点上的IP地址集,现在我正在尝试使用haproxy将TCP连接重定向到与docker服务的连接。我为每个外部可见的IP地址提供了一个docker服务。
这是我的haproxy.cfg:
global
log 10.100.10.40:514 daemon
resolvers dns
nameserver swarm 127.0.0.11:53
hold valid 5s
listen test
bind *:16000
mode tcp
log global
option tcplog
option logasap
option log-health-checks
timeout client 30s
timeout server 30s
timeout connect 5s
balance leastconn
default-server init-addr none
acl IOS0 dst 10.94.10.210
acl IOS1 dst 10.94.10.211
acl IOS2 dst 10.94.10.212
acl IOS3 dst 10.94.10.213
use-server ios0 if IOS0 !IOS1 !IOS2 !IOS3
use-server ios1 if IOS1 !IOS0 !IOS2 !IOS3
use-server ios2 if IOS2 !IOS0 !IOS1 !IOS3
use-server ios3 if IOS3 !IOS0 !IOS1 !IOS2
server ios0 ios0-br:8000 resolvers dns check inter 5000
server ios1 ios1-br:8000 resolvers dns check inter 5000
server ios2 ios2-br:8000 resolvers dns check inter 5000
server ios3 ios3-br:8000 resolvers dns check inter 5000
为了测试这个,我开始只运行一个(4种可能的)docker服务。我想要发生的是,到IP1的TCP连接成功,而到IP2,IP3,IP4的连接都失败了(直到相应的docker服务出现)。
我所看到的是,所有4个IP地址的所有连接都成功并被定向到正在运行的服务。
我必须做些什么来实现我的目标?