我是一个 HAProxy 新手 - 我有 3 个 docker 容器,其中一个运行 HAProxy,配置如下:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
stats socket /var/run/haproxy.sock mode 600 level admin
# daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
balance source
listen stats :80
stats enable
stats uri /haproxy?stats
stats realm Strictly\ Private
stats auth test:test1234
balance roundrobin
#option forwardfor
default_backend myserv-legacy
backend myserv-legacy
cookie SERVERID insert indirect preserve
server myserv-A ${MYSERVA_PORT_8080_TCP_ADDR}:8080 cookie A check
server myserv-B ${MYSERVB_PORT_8080_TCP_ADDR}:8080 cookie B check
另外两台服务器正在使用 Tomcat 运行 Web 应用程序。
我使用 关闭了我的两台服务器sudo docker stop myservA myservB
,尽管我已经启动了它们并且可以通过它们的暴露端口连接到它们,但它们都在 HAProxy 中显示为L4TOUT
在 2000 毫秒内关闭。
有任何线索可以解释为什么它们没有显示为可用吗?
编辑:
如果我跑
$ sudo docker stop haprox && sudo docker start haprox
(haprox 是我的 HAProxy 容器的名称)然后我的服务器再次可用......
答案1
我正要问地址变量的值是否正在改变,呵呵。
在动态容器环境中,我看到的做法是使用 etcd 或 Consul 等服务发现工具来帮助负载均衡器找到后端 - 如下所示Consul 有一个专门针对 HAProxy 用例的工具。