我们知道。负载均衡器在负载均衡设备中的作用是至关重要的,它起着承上启下的作用。一方面接收用户的网络请求,一方面把请求依照某种算法转接到特定的应用server中,实现负载均衡。
所以,负载均衡器中的算法是至关重要的。大多数负载均衡设备实现了下面多种算法。
1、轮询调度
轮询调度(Round Robin Scheduling)算法就是以轮询的方式依次将请求调度到不同的server,即每次调度运行i = (i + 1) mod n。并选出第i台server。算法的长处是其简洁性。它无需记录当前全部连接的状态。所以它是一种无状态调度。
在实际实现过程中,通常会为每台server设定一个权重值。这就是权重轮询调度算法。
2、最小连接调度(Least-Connection Scheduling)
最小连接调度(Least-Connection Scheduling)算法是把新的连接请求分配到当前连接数最小的server。最小连接调度是一种动态调度算法,它通过server当前所活跃的连接数来预计server的负载情况。
在实际实现过程中。通常会为每台server设定一个权重值,这就是加权最小连接调度(Weighted Least-Connection Scheduling)
3、 基于局部性的最少链接(LBLC)
基于局部性的最少链接调度(Locality-Based Least Connections Scheduling,下面简称为LBLC)算法是针对请求报文的目标IP地址的负载均衡调度。眼下主要用于Cache集群系统。由于在Cache集群中客户请求报文的目标IP地址是变化的。
LBLC调度算法先依据请求的目标IP地址找出该目标IP地址近期使用的server。若该server是可用的且没有超载,将请求发送到该server; 若server不存在,或server超载或有server处于其一半的工作负载,则用“最少链接”的原则选出一个可用的server。将请求发送到该server。
4、带复制的基于局部性最少链接(LBLCR)
带复制的基于局部性最少链接调度(Locality-Based Least Connections with Replication Scheduling,下面简称为LBLCR)算法也是针对目标IP地址的负载均衡,眼下主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组server的映射,而LBLC算法维护从一个目标IP地址到一台server的映射。
LBLCR调度算法将“热门”网站映射到一组Cacheserver(server集合)。当该“热门”网站的请求负载添加时,会添加集合里的Cacheserver,来处理不断增长的负载; 当该“热门”网站的请求负载降低时,会降低集合里的Cacheserver数目。这样,该“热门”网站的映像不太可能出如今全部的Cacheserver上,从而提供Cache集群系统的使用效率。
5、目标地址散列调度(Destination Hashing Scheduling)
目标地址散列调度(Destination Hashing Scheduling)算法是针对目标IP地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数将一个目标IP地址映射到一台server。
目标地址散列调度算法先依据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出相应的server,若该server是可用的且未超载。将请求发送到该server,否则返回空。
6、 源地址散列调度(Source Hashing Scheduling)
和目标地址散列调度类似。唯一的差别是依照源地址为散列函数的散列键。
在实际应用中,源地址散列调度和目标地址散列调度能够结合使用在防火墙集群,他们可以确保整个系统的唯一入口。