Haproxy重新加载不同的后端服务器IP

是否有可能重新加载haproxy而后端服务器IP更改? 如果,怎么样?

docker堆栈是必不可less的。 在每个部署中,具有不同IP的新容器将replace旧容器。

在我们的实现中,服务偶尔返回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群模式。 我确实尝试了发布服务的端口给主机; 然而,群内部负载平衡器的性能是不好的,我尽量避免。

虽然应该可以将HAProxyconfiguration更改为指向不同的后端服务器,但似乎将Docker容器的端口绑定到Docker主机上的可预测端口会更容易,所以HAProxyconfiguration无需更改。

例如:

 docker run -d -p 127.0.0.1:80:9999 hello_world 

你的HAProxyconfiguration可能看起来像

 backend something # Assuming the Docker host's IP address is 192.0.2.123 server some-server 192.0.2.123:9999