分享

13种负载均衡算法

 vnxy001 2022-02-08

目录

前言

所谓负载,一般指处理节点的CPU负载、MEM利用率、网络负载、可用的缓冲区、应用系统负载、用户数量以及其他的各种系统资源的当前状态信息。所谓负载均衡,是指处理节点的负载信息通过某代理软件传递给均衡器,由均衡器做出决策并对负载进行动态分配,从而使集群中各处理节点的负载相对趋于平衡。
要实现
(1)为用户提供更好的访问质量。
(2)提高服务器响应速度。
(3)提高服务器及其他资源的利用效率。
(4)避免了网络关键部位出现单点失效。
(5)解决网络拥塞问题,服务就近提供,实现地理位置无关性。
衡量服务器性能和当前运行情况的有效衡量指标包括:
(1)CPU利用率。
(2)内存使用率。
(3)带宽利用率。
(4)硬盘IO吞吐率和网络IO吞吐率。
(5)单位时间内完成的服务次数。
(6)单位时间内连接客户数
(7)完成一个请求任务所用的响应时间。
理想的负载指标应满足以下条件:测量开销低,能体现所有竞争资源上的负载,各负载指标在测量及控制上彼此独立
在引入负载均衡方案时不管是采用哪种方式都需要考虑以下问题:
(1)采用负载均衡方案后,服务器接收和转发数据报的速度及负载均衡的整体检测能力是首先要考虑的重点问题。
(2)负载均衡方案应能满足网络流量不断增长的需求,能均衡不同操作系统和硬件平台之间的负载,能均衡不同流量的负载。
(3)负载均衡设备自身出现故障时应该有良好的冗余解决方案,保证可用性,避免系统遭受重大损失。
(4)采用灵活、直观和安全的管理方式,这样便于安装、配置、维护和监控,提高工作效率,避免差错
下面介绍几种常见的负载均衡算法:

(1)轮转调度(Round-Robin Scheduling)算法

假设所有服务器处理性能相同,将外部请求按顺序轮流分配到集群中的服务器上。这种算法的优点是其简洁性,无需记录当前所有连接的状态,是一种无状态调度算法,但是不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化较大时,容易导致服务器间的负载不平衡。

(2)加权轮转调度(Weighted Round-Robin Scheduling)算法

为保证处理能力强的服务器处理更多的访问流量,用相应的权值表示服务器的处理性能,将请求数目按权值的比例分配给各服务器。调度器可以自动询问服务器的负载情况,并动态地调整其权值。这种均衡算法也是一种无状态调度算法,但可以解决服务器间性能不一的情况,能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。

(3)随机均衡调度(Random Scheduling)算法

把来自网络的请求随机分配给各个服务器。

(4)加权随机均衡调度(Weighted Random Scheduling)算法

此种均衡算法类似于加权轮转算法,不过在处理请求分担时是个随机选择的过程。

(5)最小连接调度(Least-Connection Scheduling)算法

该算法是一种动态调度算法,通过服务器中当前所活跃的连接数来估计服务器的负载情况,把新的连接请求分配到当前连接数最小的服务器。但是,当各个服务器的处理能力不同时,该算法并不理想。

(6)加权最小连接调度(Weighted Least-Connection Scheduling)算法

用相应的权值表示各个服务器的处理性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询服务器的负载情况,并动态地调整其权值。

(7)目标地址散列调度(Destination Hashing Scheduling)算法

根据请求的目标 IP地址,将其作为散列键(Hash Key),通过散列(Hash)函数将这个目标IP地址映射到一台可用且未超载的服务器,将请求发送到该服务器,属于静态映射算法。

(8)源地址散列调度(Source Hashing Scheduling)算法

与目标地址散列调度算法相反,根据请求的源 IP地址,作为散列键(HashKey),通过散列函数将请求的源IP地址映射到一台可用且未超的服务器,将请求发送到该服务器。除了将请求的目标IP地址换成请求的源IP地址,该算法采用的散列函数与目标地址散列调度算法相同,算法流程与目标地址散列调度算法的基本相似。在实际应用中,源地址散列调度和目标地址散列调度可以结合使用在防火墙集群中,它们可以保证整个系统的唯一出入口。

(9)基于局部性的最少链接调度(Locality-Based Least ConnectionsScheduling)算法

找出请求的目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;否则用“最少链接”的原则选出一个可用的服务器。算法的设计目标是在服务器的负载基本平衡情况下将相同目标IP地址的请求调度到同一台服务器,来提高各台服务器的访问局部性和主存Cache命中率。

(10)带复制的基于局部性最少链接调度(Locality-Based Least Connectionswith Replication Scheduling)算法

与基于局部性的最少链接调度算法的不同之处在于,它要维护从一个目标IP地址到一组服务器的映射,而不是从一个目标IP地址到一台服务器的映射。该算法找出请求的目标IP地址对应的服务器组,按“最少链接”原则从服务器组中选出一台服务器,若服务器可用且没有超载,将请求发送到该服务器;否则按“最少链接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,再将请求发送到该服务器。另外,若该服务器组有一段时间未被修改,则将最忙的服务器从服务器组中删除,以降低复制的程度。

(11)响应速度均衡调度(Response Time Scheduling)算法

负载均衡设备对内部各服务器发出一个探测请求,然后由对探测请求响应最快的一台服务器来响应客户端的服务请求。

(12)处理能力均衡调度(Processing Capacity Scheduling)算法

负载均衡设备记录集群内部处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成),将服务请求分配给负荷最轻的服务器。由于考虑到了内部服务器的处理能力及当前网络运行状况等不同情形,因此这种均衡算法相对来说更加精确,尤其适合运用到第7层(应用层)负载均衡的情况,但附加开销也较大。

(13)DNS均衡调度(DNS Scheduling)算法

分处在不同地理位置的负载均衡设备,收到同一个客户端的域名解析请求,并在同一时间内,把此域名解析成各自相对应服务器的IP地址,并返回给客户端,客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其他的IP地址响应。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多