有效的负载均衡器能够智能地确定给定服务器群中的哪个设备最适合处理传入的数据包。这样做需要编程的算法以一种特定的方式分配负载。
根据负载是分布在网络还是应用程序层,算法有很大的不同。算法选择影响负载分配机制的有效性,从而影响性能和业务连续性。
在这里,我们将讨论网络和应用层负载平衡解决方案中几种广泛使用的算法的优缺点。
网络层和应用层算法的不同之处在于它们如何能够分析传入的流量以及它们用于分配流量负载的标准。
网络层负载均衡器面临的主要挑战是对流量流的不可见性,仅限于存储在网络包头中的信息。路由决策必须只基于几个因素—主要是源和目标IP数据。
网络层负载平衡器无法评估传入请求的性质、预期的负载生成以及给定时间内可用的服务器资源。他们需要一定数量的猜测来做出路由决策。
轮循一批服务器被编程成以轮流顺序的方式处理负载。该算法假设每个设备能够处理相同数量的请求,而不能够处理活动连接。应用层负载平衡器根据正在处理的请求的内容分发请求,包括除会话cookie之外的HTTP/S头和消息。它们还可以在从服务器返回时跟踪响应,从而提供关于每个服务器在任何时候都在处理的负载的数据。
与网络负载平衡的推测性相反,应用程序负载平衡是数据驱动的。这提供了传入请求的智能分发。
最值得注意的应用层算法是等待请求最少(LPR)。它监视挂起的HTTP/S请求,并将它们分发到最可用的服务器。LPR可以立即调整以适应新连接的突然涌入,同时持续监视服务器场中所有服务器的工作负载。
精确的负载分配——与网络层算法根据预先设定的规则分配请求不同,LPR智能地选择最适合实时处理传入连接的服务器。
请求特定分发—LPR可以确认连接请求占用不同的处理时间,并相应地分配负载。因此,流量不会被路由到繁忙的服务器。