Haproxy 1.5x 重新加载配置而不终止第 7 层会话?

Haproxy 1.5x 重新加载配置而不终止第 7 层会话?

各位朋友,

我把我们的一个 SaaS 应用程序从 Coyote Point 硬件负载均衡器移到了运行 nginx + haproxy 的虚拟机上,并使用 haproxy 处理哈希持久性。

我遇到的问题是应用程序需要会话粘性到单个后端服务器(无论哪个接受原始请求),但是当我更改 haproxy.cfg 并执行 service haproxy reload 时,它会将 haproxy 作为新进程重新启动并终止旧进程,从而终止与特定后端服务器的任何现有连接,这意味着任何用户都会立即从应用程序中注销。

这是 HA-Proxy 版本 1.5.4 2014/09/02 的 haproxy 后端配置

backend webapp
    balance hdr(X-Real-IP)
        hash-type consistent
        mode http
        server server1 192.168.10.50:8080 check port 8080
        server server2 192.168.10.53:8080 check port 8080
        server server3 192.168.10.55:8080 check port 8080
        server server4 192.168.10.62:8080 check port 8080 backup

这对我们来说是一个大问题,因为当我需要对特定后端服务器执行维护,或者从后端池中添加/删除其他服务器时,我无法在不影响应用程序客户端体验的情况下执行此操作。

如果 Haproxy 无法正常重新加载,我该如何动态地更改后端的服务器,而不终止与我不会更改的后端的现有会话?

答案1

如果为服务器定义了一个对等体,即使它只有一个并且是本地的,那么在每个soft restarthaproxy 中,状态都应该复制到新的进程中。

文档

相关内容