【发布时间】:2017-04-20 21:34:47
【问题描述】:
是否可以在后端服务器 ip 更改时重新加载 haproxy?如果,如何?
对于 docker stack 来说是必不可少的。在每次部署时,具有不同 ip 的新容器将替换旧容器。
在我们的实现中,服务偶尔会返回 503,因为旧的 haproxy 进程没有终止并且仍在接受请求,而后端服务器已经消失。 httplog 显示一些请求转发了一个已经消失的后端。
# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 893 0.0 0.0 0 0 ? Zs 19:39 0:01 [haproxy] <defunct>
root 898 0.3 0.0 49416 9640 ? Ss 19:49 0:13 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid
root 915 0.2 0.0 0 0 ? Zs 19:49 0:12 [haproxy] <defunct>
root 920 0.2 0.0 49308 10196 ? Ss 20:57 0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid
root 937 0.0 0.0 0 0 ? Zs 20:57 0:00 [haproxy] <defunct>
root 942 0.3 0.0 49296 9880 ? Ss 20:58 0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid
root 959 0.2 0.0 49296 9852 ? Ss 20:58 0:01 /usr/local/sbin/haproxy -D -f /app/haproxy.cfg -p /var/run/haproxy.pid
[编辑] 我正在使用 docker swarm 模式。我确实尝试过将服务的端口发布到主机;但是,swarm 的内部负载均衡器的性能很差,我尽量避免。
【问题讨论】:
标签: docker load-balancing haproxy