2

几个月来我们遇到了一个奇怪的小问题:

我们集群上的负载(http,具有大量非常短(<100ms)请求的持久保活连接)分布非常不均匀。所有服务器都以相同的方式配置,但某些每秒推送数千个请求的连接最终只会发送到一台服务器。我们尝试了两种负载平衡策略,但没有帮助。它似乎与keepalive相关。

行为不端的后端具有以下设置:

option tcpka
option http-pretend-keepalive

option http-server-close为了解决这个问题吗?如果我做对了,它将关闭并重新打开很多连接,这意味着加载到系统?有没有办法保持连接打开但无论如何均衡流量?我尝试启用该选项,但在负载下它会杀死我们所有的后端。

4

2 回答 2

4

HAProxy 目前仅支持与客户端保持活动的 HTTP 连接,而不是服务器。如果您希望能够检查(和平衡)每个 HTTP 请求,您当前必须使用以下选项之一

# enable keepalive to the client
option http-server-close

# or

# disable keepalive completely
option httpclose

option http-pretend-keepalive不会改变 HAProxy 在连接处理方面的实际行为。相反,它旨在作为服务器在看到非保活连接时无法正常工作的解决方法(由 HAProxy 生成到后端服务器)。

对后端服务器保持活动的支持计划在最终的 HAProxy 1.5 版本中。但实际范围可能仍会有所不同,最终发布日期是在未来的某个时间......

于 2013-12-06T17:39:02.957 回答
1

仅供参考,它存在于最新版本 1.5-dev20 中(但要进行修复,因为它附带了一些回归)。

于 2013-12-16T20:01:12.343 回答