HAProxy 没有公平地平衡服务器负载

Mar*_*ark 7 scaling load-balancing haproxy

HAProxy 似乎并没有保持与服务器的连接平衡。

请记住这一点:

  • 使用 HAProxy v1.3.26
  • 5 个均衡的服务器规格
  • 算法是循环的,但没有对每个服务器应用权重
  • 在 haproxy 中设置的全局最大连接数为 80,000

如图所示,服务器 C 和 D 的连接似乎比其他服务器多。由于这种额外的负载,它们会继续下降并自动重新启动。

状态 配置

我尝试阅读 HAproxy 官方文档并进行了一些谷歌搜索,但没有发现任何有用的信息。希望这里有人可以提供帮助。

几个问题:

  1. 为什么当配置说使用 roundrobin、服务器规格相同并且没有应用权重时会出现这种情况?

  2. 什么决定了“会话”列中的“最大”子列(表示 1970、1444 等的那个)。服务器 C、D、E 在 3K 范围内,其他 2 个在 2K 以下。为什么会有差异?

  3. 如何让这一切保持平衡?

  4. 有人可以解释每一列吗?我很惊讶 HAproxy 的官方文档并没有真正解释它。

小智 1

如果把 C 和 D 去掉会发生什么?行为如何改变?

您的配置是什么样的?

免责声明:以下是我对 HAProxy 行为的观察,而不是它的实际情况。

HAProxy 总是使用我所理解的权重。如果您在屏幕截图上查看您的权重,它会显示所有权重都是权重 1。运行循环,我们有 4 台权重 50 的服务器和一台权重 1 的服务器。就会话数量而言,权重 50 的四个服务器近乎完美( 2-3 关)。按比例来说,权重为 1 的服务器具有适当数量的会话。

尝试将权重明确设置为相同的更高值。这应该有助于它的重量计算更加细粒度,从而实现更高的准确性。如果权重是所有权重中的一个,则按 20% 计算,这不太准确。现在,如果将所有 5 个权重设置为 20,则可以按 1% 进行处理。

  1. 没有把握。我需要先看看配置。
  2. 我非常确定“最大”列是它在任何给定点上拥有的最大连接数,而不是允许的实际最大连接数。
  3. 我们使用循环法,它工作得很好,所以我们再次需要查看配置并尝试一些事情。
  4. 我认为大多数专栏都非常清楚。对我有帮助的是查看上面的扩展列(例如队列、会话速率等)

希望这能给你一些值得一看的东西。