我在寻找一个解决方案,优雅的重新装载的哈代理。我有一个nginx服务器正在运行,它将请求传递给have,有时我会重新加载have配置。但是我注意到,在重新加载时,所有现有的连接都被切断了,并且haproxy后端队列显示了0个请求(从haproxy的套接字状态获取)。
我正在使用在几篇博客文章和haproxy文档中提到的关于这个问题的方法:
重装:
haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf (</var/run/haproxy.pid)开始:
haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid 如果有人能提出解决办法,我会很感激的。下面是我的haproxy配置文件
global
maxconn 64000
ulimit-n 200000
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
spread-checks 5
stats socket /etc/haproxy/stats
defaults
log global
mode http
balance roundrobin
maxconn 64000
option abortonclose
option httpclose
retries 3
option redispatch
timeout client 30000
timeout connect 30000
timeout server 30000
stats enable
stats uri /haproxy?stats
stats realm Haproxy Statistics
stats auth haproxy:stats
timeout check 5000发布于 2012-02-18 08:00:25
你发布的命令在我看来并不是百分之百正确。在我的系统里,它写着:
haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf $(cat /var/run/haproxy.pid)您输入了最后一个选项-sf的值。
发布于 2012-02-18 08:48:42
根据您的测试方法,这可能是预期的。尽管如上所述,在重新加载命令结束时,您似乎也缺少了一个$?
当HAProxy执行“重新加载”时,它启动一个新的HAProxy进程,从第一个进程到第二个进程通过unix域套接字发送会话数据,第一个进程从侦听的HAProxy端口解除绑定,第二个进程绑定。然后,第一个进程终止。因此,它们在任何阶段都不共享内存,并且似乎不同步文件描述符(反正是从我自己的测试中)。因此,重新加载的要点是维护持久化表(例如基于cookie的哈希),以便客户端重新连接到所需的后端服务器。然而,它应该是优雅的,从意义上说,连接是从第一个过程,而不是立即下降。
如果您在执行重新加载时查看您的流程表,那么您应该观察上面的内容,除非我测试后(几个月前)发生了变化。
https://serverfault.com/questions/361412
复制相似问题