HAProxy似乎并没有保持与服务器的连接平衡。
记住这一点:
如图所示,服务器C和D似乎正在获得比其他更多的连接。 由于这个额外的负载,他们不断下降,并自动重新启动。
我试着读HAproxy官方文档,并做了一些Googlesearch,但没有发现任何有用的东西。 希望这里有人能帮忙。
几个问题:
为什么当configuration说使用roundrobin,服务器规格是相同的,没有权重应用?
什么决定了“会话”列(即1970,1444等)中的“最大”子列。 服务器C,D,E在3K范围内,另外两个在2K以下。 为什么区别?
如何保持均衡?
有人可以解释每一列吗? 我很惊讶HAproxy的官方文档没有真正解释它。
如果你把C和D拿出来会发生什么。 行为如何改变?
你的configuration是什么样的?
免责声明:以下是我对HAProxy行为的观察,而不是实际可能的结果。
HAProxy总是使用我所了解的权重。 如果你在屏幕截图上看你的权重,那么他们都是重量1.运行roundrobin,我们有4个重量为50,重量为1的服务器。重量为50的四个服务器在会话数量方面接近完美2-3关)。 具有1个权重的服务器具有适当的会话数量。
尝试明确地将权重设置为相同的较高值。 这应该有助于它的重量计算更精细一些,这应该达到更高的精度。 如果权重是所有人的一个,那么它处理20%,这是不是很准确。 现在如果你把所有的5设置为20,那么它可以处理1%。
希望能给你一些东西来看看。
您应该使用“leastconn”方法而不是循环法。 它使用稍微多一点的CPU,但是如果你的会话不是超短的话,会有更好的负载平衡。
如果你看,你的A,B和E服务器有250个当前会话打开(Sessions Cur)。 但C + D有很多次。 但是因为您指定了“循环”,所以这些重载的服务器会得到所有新stream量的均匀分配。
“leastconn”允许服务器恢复,如果他们不知所措。 “roundrobin”不断地发送每个人的stream量(堆放更多的连接到一个缓慢的服务器),直到他们倒下。
所有会话variables的含义都logging在非常全面的文档末尾。 (search“统计和监测”)