负载平衡长时间运行的 TCP 连接

TJF*_*TJF 8 load-balancing tcp haproxy

我正在尝试研究针对以下场景对长时间运行的 TCP 连接进行负载平衡的最佳方法:

我们在一组冗余防火墙后面有多个服务器,客户端与我们的后端服务器建立长期运行(通常 10-15 小时)的 TCP 连接。
现在,“负载平衡”是通过客户端循环方法处理的,以通过 IP 地址列表,这些 IP 地址都位于我们的防火墙中,并相应地 NAT 到后端服务器。

我想摆脱这种方法,只有一个公共 IP,并有一个单独的负载平衡器,可以检查服务器的运行状况/负载并相应地分发传入的客户端连接请求。

这里的一个问题是,每个客户端在 3 个不同的端口上建立 3 个套接字连接,如果这些连接是“粘性的”,我更喜欢,因此所有这 3 个连接请求都发送到同一个后端服务器。

我一直在研究例如 HAProxy,但我不确定它是否真的适合我的场景。我们的连接数相对较少(约 300 个客户端 * 每个客户端 3 个套接字连接)。通常我们看到每个套接字约 15KB/s 的连续数据传输量。

非常感谢您对此的任何意见!

谢谢,

汤姆

vor*_*aq7 3

假设您的所有后端计算机都是“活动的”并且能够响应请求,那么您真正需要的只是负载平衡器前端。

一个好的负载均衡器将能够跟踪前往每个主机的连接数量并动态分配新连接,以避免淹没后端系统之一(我所说的“好”是指“昂贵”,例如思科内容交换机/内容交换服务模块)。价格与功能密切相关:内容交换机在解决方案层中处于相当高的位置。

我没有使用 HAProxy 的经验,但听起来它可以像内容交换机一样进行最少连接负载平衡,因此这可能是一个不错的选择(并且价格更具吸引力)。我不确定 HAProxy 是否可以进行源跟踪(将来自同一 IP 的所有连接发送到同一后端)。

pf防火墙(或pfsense定制发行版)向下走几步就可以进行负载平衡(随机或循环,我不相信他们可以像内容交换机一样将“加权最少连接”作为平衡选项)。源跟踪是在 pf 中实现的,尽管您可能需要考虑保留该信息的时间,以避免连接从一台服务器移动到另一台服务器时出现问题。
如果您已经使用 pf/pfsense 作为防火墙,这是一个免费选项:我们在当前的部署中使用它并取得了良好的效果,但我们的连接寿命不如您的。