LVS常用的调度算法

半兽人 发表于: 2024-01-10   最后更新时间: 2024-01-11 09:29:38  
{{totalSubscript}} 订阅, 888 游览

LVS常用的调度算法

1、轮询(Round Robin,rr)

调度器通过"轮询"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,公平的对待每一台服务器,而不管服务器上实际的连接数和系统负载。

特点:

  1. 轮叫的方式依次将请求调度不同的服务器;
  2. 算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。

2、加权轮叫(Weighted Round Robin,wrr)

调度器通过"加权轮询"调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

特点:

  1. 解决服务器间性能不一的情况;
  2. 按权值的高低和轮叫方式分配请求到各服务器。权值高的服务器先收到的连接,权值高的服务器比权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。

3、最少链接(Least Connections,lc)

调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

特点:

  1. 把新的连接请求分配到当前连接数最小的服务器。
  2. 一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加 1;当连接中止或超时,其连接数减一。

4、加权最少链接(Weighted Least Connections,wlc)

在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

特点:

  1. 各个服务器用相应的权值表示其处理性能。
  2. 将新的连接分发到当前连接数乘以权重最小的服务器。
  3. 服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。

5、基于局部性的最少链接(Locality-Based Least Connections,lblc)

根据客户端IP地址和服务器的距离,将新的连接分发到当前连接数最少的服务器。

特点:

  1. 简称LBLC算法,针对请求报文的目标 IP 地址的负载均衡调度,目前主要用于 Cache 集群系统,因为在 Cache 集群中客户请求报文的目标 IP 地址是变化的。
  2. 假设任何后端服务器都可以处理任一请求,算法的设计目标是在服务器的负载基本平衡情况下,将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和主存 Cache 命中率,从而整个集群系统的处理能力。
  3. LBLC调度算法先根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于其一半的工作负载,则用 “最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器。

6、带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)

"带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。

特点:

  1. 简称 LBLCR算法。它与 LBLC 算法的不同之处是它要维护从一个目标 IP 地址到一组服务器的映射。而LBLC算法维护从一个目标IP地址到一台服务器的映射。
  2. LBLCR 算法先根据请求的目标 IP 地址找出该目标 IP 地址对应的服务器组;按 “ 最小连接 ” 原则从该服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载;则按 “ 最小连接 ” 原则从整个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服 务器从服务器组中删除,以降低复制的程度。

7、目标地址散列(Destination Hashing,dh)

  1. 针对目标 IP 地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数将一个目标 IP 地址映射到一台服务器。

  2. 目标地址散列调度算法先根据请求的目标 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

8、源地址散列(Source Hashing,sh)

负载均衡器根据请求的源 IP 地址将请求分发到后端服务器。

算法逻辑

  1. 源地址散列调度(Source Hashing Scheduling)算法正好与目标地址散列调度算法相反。
  2. 它根据请求的源 IP 地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
  3. 它采用的散列函数与目标地址散列调度算法的相同。它的算法流程与目标地址散列调度算法的基本相似,除了将请求的目标 IP 地址换成请求的源 IP 地址。
  4. 在实际应用中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。

工作原理如下:

  1. 对于每个传入的请求,负载均衡器会使用哈希函数计算源 IP 地址的哈希值。
  2. 使用哈希值,将请求分发到后端服务器列表中的一个具体服务器。
  3. 这样,相同的源 IP 地址的请求将始终被分发到相同的后端服务器。

Source Hashing 在某些场景下很有用,特别是当你希望相同的客户端 IP 地址的请求都路由到同一台后端服务器时。这有助于保持会话的一致性,避免在某些应用场景下可能出现的问题。

请注意,使用 Source Hashing 时,增加或减少后端服务器可能会导致哈希结果变化,因此可能会导致一些连接的重新分配。这是需要考虑的一点,尤其是在动态环境中。

9、最小响应时间(Least Response Time,lrt):

将新的连接分发到平均响应时间最短的服务器。

10、加权最小响应时间(Weighted Least Response Time,wlrt):

考虑服务器权重,将新的连接分发到平均响应时间乘以权重最短的服务器。

11、基于局部性的最小响应时间(Locality-Based Least Response Time,lblr):

根据客户端IP地址和服务器的距离,将新的连接分发到平均响应时间最短的服务器。

LVS
更新于 2024-01-11

查看LVS更多相关的文章或提一个关于LVS的问题,也可以与我们一起分享文章