我是一个 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 运行 webapp。
我用 关闭了我的两台服务器sudo docker stop myservA myservB
,虽然我已经启动了它们并且可以通过它们暴露的端口连接到它们,但它们在 HAProxy 中都显示为L4TOUT
在 2000 毫秒内关闭。
任何线索为什么他们不会显示为可用?
编辑:
如果我跑
$ sudo docker stop haprox && sudo docker start haprox
(haprox 是我的 HAProxy 容器的名称)然后我的服务器再次可用......
我正想问地址变量的值是不是变了,呵呵。
我在动态容器环境中看到的方法是使用 etcd 或 Consul 之类的服务发现工具来帮助负载均衡器找到后端——看起来Consul 有一个专门用于 HAProxy 用例的工具。