在我看来,haproxy的循环负载平衡并不总是循环的。还是虫子?
我正在负载平衡hive-server2示例。我有3个示例来提供配置单元查询。客户是直线的。当我在这群计算机上运行长时间的测试时,示例会重新启动几次,有一次,即使haproxy stats页面上的所有示例都显示为up状态(我手动检查服务器是否已启动),但只有两个示例会在35-40分钟内为所有查询提供服务,当更大的负载到达时,从那时起,一切都恢复正常了。
因此,我在stats页面上看到的是,所有示例都是在30分钟前重新启动的,虽然server2和server3分别提供了4-5个客户端连接,但是server1没有提供任何服务。然后突然,服务器1并行地为9个客户机提供服务,另外两个服务器分别并行地为4-5个客户机提供服务,然后真正的循环平衡恢复正常。
当haproxy配置为执行循环平衡时,它不应该将会话均匀地分布在所有已启动、可访问和服务少于最大允许会话数的服务器上吗?
1条答案
按热度按时间a14dhokn1#
默认情况下,haproxy应该向在负载平衡方案中定义的所有服务器发送请求,但是您有更多的因素促成了这一点,例如:
timeout connect
,timeout client
,timeout server
,cookie
. 您可以尝试调整这些参数。请记住,如果您是负载平衡(第7层)http请求或(第4层)tcp请求,则会有所不同。例如,可能http服务器正在返回
400
s或500
的响应,但到服务器的tcp连接正常。