负载平衡:轮询可能不是正确的选择

发布于:2021-01-07 15:47:22

0

155

0

负载平衡 轮询 算法

当涉及到负载平衡时,轮询可能不是最佳选择。如果安装了自动缩放功能,那就更糟了。在本文中,请看一个简单的示例,解释为什么会这样,轮询算法如何工作,以及应该为平均流量分配而潜在选择的负载平衡算法。

根据我们的经验,我们认为轮询可能不是一种有效的负载平衡算法,因为它不会在所有节点之间平均分配流量。

您可能想知道这怎么可能?对的,这是可能的!

循环负载均衡算法如何工作?

循环算法按接收请求的顺序在节点之间发送请求。这是一个简单的例子。假设您有3个节点:节点A,节点B和节点C。

  • 第一个请求发送到节点A。

  • 第二个请求发送到节点B。

  • 第三请求被发送到节点C。

负载平衡器将继续根据此顺序将请求发送到服务器。似乎流量将在节点之间平均分配。但这不是事实。

循环算法有什么问题?

{xunruicms_img_title}

让我们举一个简单的例子。假设您使用负载均衡器启动了Web应用程序,并且它后面有两个节点(node-A,node-B)。负载平衡器配置为以循环算法运行,并且启用了粘性会话负载平衡。假设当前有200个用户在使用您的应用程序。

由于在负载均衡器中启用了循环算法,因此每个节点将获得100个用户的请求。

{xunruicms_img_title}

几分钟后,添加节点C。假设现在有另外100个用户开始使用该应用程序。由于它是循环算法,因此负载均衡器会将新用户的请求平均分配给所有3个节点(即,每个节点33个用户的请求)。

但是请记住,节点A和节点B已经分别处理100个用户请求。因此,现在节点A和节点B最终将分别处理133个用户请求(即100个原始用户请求+ 33个新用户请求),而节点C将仅处理33个(新)用户请求。现在,您知道为什么轮询机制不能平均分配流量吗?

在循环算法中,池中较旧的节点将总是最终处理更多的请求。新添加的节点最终将处理更少的流量。负载永远不会平均分配。为了维护,修补和安装目的,您必须不断地从负载均衡器池中添加和删除节点。

如果您安装了自动缩放功能,问题将变得更加严重。在自动缩放中,节点更加动态。它们被添加和删除的频率更高。

使用什么算法?

{xunruicms_img_title}

负载平衡算法有多种:加权循环,随机,源IP,URL,最少连接,最少流量和最小延迟。

考虑到循环轮询的缺点,您可以考虑尝试其他选择。

您可能考虑的一种选择是:“最少连接数”算法。根据此算法,连接数最少的节点将获得下一个请求。因此,按照我们前面的示例,当新的100个用户开始使用该应用程序时,所有新用户的请求都将发送到节点C。因此,负载将在所有节点之间平均分配。