是否有可能在重新启动HAProxy时维护队列?

我正在使用HAProxy来平衡应用服务器。 每个应用程序服务器都有一个最大连接限制,一旦超过该限制,超出队列。 当发生这种情况时,我将添加另一个应用程序服务器到HAProxy,并使用“优雅的重新加载”来保持传入的请求,直到服务再次启动。 我的问题是,当它重新启动时,现有队列将会发生什么 – 将会被保留吗? 如果不是,我怎么能保留它呢? 我显然不希望HTTP请求在重新加载时被丢弃。

从官方文档: http : //www.haproxy.org/download/1.7/doc/management.txt

HAProxy支持一个优雅而艰难的中止。 硬停止很简单,当SIGTERM信号被发送到haproxy进程时,立即退出,所有build立的连接都closures。 当SIGUSR1信号被发送到haproxy进程时,正常停止被触发。 它只包含从侦听端口解除绑定,但是继续处理现有的连接直到closures。 一旦最后一次连接closures,stream程将离开。

硬停止方法用于服务pipe理脚本的“停止”或“重新启动”动作。 优雅的停止是用于“重新加载”的行动,试图在新的过程中无缝地重新加载一个新的configuration。

这两个信号都可以在重新载入或重新启动时由新的haproxy进程发送,以便在最后时刻发送,并且只有在绝对需要时才会发送。 这是“-st”(hard)和“-sf”(优雅)选项分别执行的操作。

特别是:

它的优雅之处在于只从侦听端口解除绑定,但是继续处理现有的连接直到closures。

重点: 但是继续处理现有的连接

您可能会看到后端队列降到0,因为这些是新进程的新形成的后端队列的统计信息。 旧的那个已经被填满了,不再显示,因为它属于前一个过程。 但它正在被处理,根据这个链接,其中还包括一个testing场景来validation自己:

http://comments.gmane.org/gmane.comp.web.haproxy/7815