1.3. LVS 调度总览
使用 LVS 的优点之一就是它的灵活性,即可将 IP 级别负载均衡到真实服务器中。这种灵活性是因为配置 LVS 时管理员可以选择各种调度算法。LVS 负载平衡相对较少灵活性的方法来说更高级一些,比如轮叫 DNS,使用这种方法引起的 DNS 层级性和客户端机器缓存会导致负载失衡。另外,LVS 使用的底层过滤比应用程序层请求转发更有利,因为在网络数据包级别的平衡负载引起的计算超载最小,并可允许更大的可伸缩性。
Using scheduling, the active router can take into account the real servers' activity and, optionally, an administrator-assigned weight factor when routing service requests. Using assigned weights gives arbitrary priorities to individual machines. Using this form of scheduling, it is possible to create a group of real servers using a variety of hardware and software combinations and the active router can evenly load each real server.
用于 LVS 的调度机制是由名为 IP 虚拟服务器或者 IPVS 模块的内核补丁集合提供的。这些模块启用了 layer 4(L4)传输层选项,该选项是设计用来在单一 IP 地址中更好地使用多个服务器。
要追踪数据包并将其有效路由到真实服务器中,IPVS 会在内核中建立一个 IPVS 表。活跃 LVS 路由器使用这个列表将来自虚拟服务器地址的请求重新路由并返回真实服务器池中的真实服务器中。ipvsadm 程序可随时更新 IPVS 列表 — 根据其可用性添加和删除群集成员。
1.3.1. 调度算法
The structure that the IPVS table takes depends on the scheduling algorithm that the administrator chooses for any given virtual server. To allow for maximum flexibility in the types of services you can cluster and how these services are scheduled, Red Hat Enterprise Linux provides the following scheduling algorithms listed below. For instructions on how to assign scheduling algorithms refer to 第 4.6.1 节 “.
子界面”
- Round-Robin Scheduling
- 连续在真实服务器池中分配每个请求。使用此算法,所有真实服务器都会被同等对待,而不考虑其容量或者负载。这种调度模式延续了轮叫 DNS 但更加粗糙,因为它是基于网络连接而不是基于主机。LVS 轮叫调度不会陷入由 DNS 缓存查询造成的负载失衡状态。
- Weighted Round-Robin Scheduling
- Distributes each request sequentially around the pool of real servers but gives more jobs to servers with greater capacity. Capacity is indicated by a user-assigned weight factor, which is then adjusted upward or downward by dynamic load information. Refer to 第 1.3.2 节 “服务器加权和调度” for more on weighting real servers.如果真实服务器池中的真实服务器之间有显著的差别,加权轮叫调度就是首选。但是,如果请求的负载有很大不同,那么加权强的服务器会回应更多的请求。
- Least-Connection
- 为有较少活跃连接的服务器发送更多请求。因为它会通过 IPVS 列表追踪到真实服务器的活跃连接,最小连接是动态调度算法的一类,在请求负载差别很大时是上佳选择。它最适用于每个节点有类似容量的真实服务器池。如果一组服务器有不同的容量,加权最小连接调度则是更好的选择。
- Weighted Least-Connections (default)
- Distributes more requests to servers with fewer active connections relative to their capacities. Capacity is indicated by a user-assigned weight, which is then adjusted upward or downward by dynamic load information. The addition of weighting makes this algorithm ideal when the real server pool contains hardware of varying capacity. Refer to 第 1.3.2 节 “服务器加权和调度” for more on weighting real servers.
- Locality-Based Least-Connection Scheduling
- 为与相对它们的目的 IP 有更少活跃连接的服务器分配更多的请求。这种算法是设计用于代理服务器缓存的服务器群集。它会为 IP 地址将数据包路由到服务器,除非该服务器已经超过了它的容量,并另有服务器只使用了容量的一半,在这种情况下,它会将 IP 地址分配给最小负载的真实服务器。
- Locality-Based Least-Connection Scheduling with Replication Scheduling
- 为与相对它们的目的 IP 有更少活跃连接的服务器分配更多的请求。这种算法是设计用于代理服务器缓存的服务器群集。它和使用将目标 IP 与真实服务器节点的子网络进行映射的局部最小连接调度不同。请求会被路由到子网络中有最少连接的服务器中。如果目的 IP 的所有节点都超过了容量,它会为那个目的 IP 复制一个新的服务器,这可通过将真实服务器池中那个有最小连接的真实服务器为目的地址 IP 添加到真实服务器的子网中实现。然后会从真实服务器子网中除去负载最大的节点以免过度重复。
- Destination Hash Scheduling
- 通过在静态散列列表中查看目的 IP 来将请求分配到真实服务器池中。这个算法是设计用于代理服务器缓存的服务器群集。
- Source Hash Scheduling
- 通过在静态散列列表中查看目的 IP 来将请求分配到真实服务器池中。这个算法是为带多个防火墙的 LVS 路由器设计的。