负载主机可以提供很多种负载均衡方法,也就是我们常说的调度方法或算法:
轮循(Round Robin)
这种方法会将收到的请求循环分配到服务器集群中的每台机器,即有效服务器。如果使用这种方式,所有的标记进入虚拟服务的服务器应该有相近的资源容量以及负载形同的应用程序。如果所有的服务器有相同或者相近的性能那么选择这种方式会使服务器负载形同。基于这个前提,轮循调度是一个简单而有效的分配请求的方式。然而对于服务器不同的情况,选择这种方式就意味着能力比较弱的服务器也会在下一轮循环中接受轮循,即使这个服务器已经不能再处理当前这个请求了。这可能导致能力较弱的服务器超载。
加权轮循(Weighted Round Robin)
这种算法解决了简单轮循调度算法的缺点:传入的请求按顺序被分配到集群中服务器,但是会考虑提前为每台服务器分配的权重。管理员只是简单的通过服务器的处理能力来定义各台服务器的权重。例如,能力最强的服务器A给的权重是100,同时能力最低的服务器给的权重是50。这意味着在服务器B接收到第一个请求之前前,服务器A会连续的接受到2个请求,以此类推。
最少连接数(Least Connection)
以上两种方法都没有考虑的是系统不能识别在给定的时间里保持了多少连接。因此可能发生,服务器B服务器收到的连接比服务器A少但是它已经超载,因为服务器B上的用户打开连接持续的时间更长。这就是说连接数即服务器的负载是累加的。这种潜在的问题可以通过“最少连接数”算法来避免:传入的请求是根据每台服务器当前所打开的连接数来分配的。即活跃连接数最少的服务器会自动接收下一个传入的请求。接本上和简单轮询的原则相同:所有拥有虚拟服务的服务器资源容量应该相近。值得注意的是,在流量率低的配置环境中,各服务器的流量并不是相同的,会优先考虑第一台服务器。这是因为,如果所有的服务器是相同的,那么第一个服务器优先,直到第一台服务器有连续的活跃流量,否则总是会优先选择第一台服务器。
最少连接数慢启动时间(Least Connection Slow Start Time)
对最少连接数和带权重的最小连接数调度方法来说,当一个服务器刚加入线上环境是,可以为其配置一个时间段,在这段时间内连接数是有限制的而且是缓慢增加的。这为服务器提供了一个‘过渡时间’以保证这个服务器不会因为刚启动后因为分配的连接数过多而超载。这个值在L7配置界面设置。
加权最少连接(Weighted Least Connection)
如果服务器的资源容量各不相同,那么“加权最少连接”方法更合适:由管理员根据服务器情况定制的权重所决定的活跃连接数一般提供了一种对服务器非常平衡的利用,因为他它借鉴了最少连接和权重两者的优势。通常,这是一个非常公平的分配方式,因为它使用了连接数和服务器权重比例;集群中比例最低的服务器自动接收下一个请求。但是请注意,在低流量情况中使用这种方法时,请参考“最小连接数”方法中的注意事项。
基于代理的自适应负载均衡(Agent Based Adaptive Balancing)
除了上述方法之外,负载主机包含一个自适用逻辑用来定时监测服务器状态和该服务器的权重。对于非常强大的“基于代理的自适应负载均衡”方法来说,负载主机以这种方式来定时检测所有服务器负载情况:每台服务器都必须提供一个包含文件,这个文件包含一个0~99的数字用来标明改服务器的实际负载情况(0=空前,99=超载,101=失败,102=管理员禁用),而服务器同构http get方法来获取这个文件;同时对集群中服务器来说,以二进制文件形式提供自身负载情况也是该服务器工作之一,然而,并没有限制服务器如何计算自身的负载情况。根据服务器整体负载情况,有两种策略可以选择:在常规的操作中,调度算法通过收集的服务器负载值和分配给该服务器的连接数的比例计算出一个权重比例。因此,如果一个服务器负载过大,权重会通过系统透明的作重新调整。和加权轮循调度方法一样,不正确的分配可以被记录下来使得可以有效的为不同服务器分配不同的权重。然而,在流量非常低的环境下,服务器报上来的负载值将不能建立一个有代表性的样本;那么基于这些值来分配负载的话将导致失控以及指令震荡。因此,在这种情况下更合理的做法是基于静态的权重比来计算负载分配。当所有服务器的负载低于管理员定义的下限时,负载主机就会自动切换为加权轮循方式来分配请求;如果负载大于管理员定义的下限,那么负载主机又会切换回自适应方式。
固定权重(Fixed Weighted)
最高权重只有在其他服务器的权重值都很低时才使用。然而,如果最高权重的服务器下降,则下一个最高优先级的服务器将为客户端服务。这种方式中每个真实服务器的权重需要基于服务器优先级来配置。
加权响应(Weighted Response)
流量的调度是通过加权轮循方式。加权轮循中所使用的权重是根据服务器有效性检测的响应时间来计算。每个有效性检测都会被计时,用来标记它响应成功花了多长时间。但是需要注意的是,这种方式假定服务器心跳检测是基于机器的快慢,但是这种假设也许不总是能够成立。所有服务器在虚拟服务上的响应时间的总和加在一起,通过这个值来计算单个服务物理服务器的权重;这个权重值大约每15秒计算一次。
源IP哈希(Source IP Hash)
这种方式通过生成请求源IP的哈希值,并通过这个哈希值来找到正确的真实服务器。这意味着对于同一主机来说他对应的服务器总是相同。使用这种方式,你不需要保存任何源IP。但是需要注意,这种方式可能导致服务器负载不平衡。
1. 本文由程序员学架构摘译
2. 本文译自http://www.loadbalancerblog.com/blog/2013/06/load-balancing-scheduling-methods-explained
3. 转载请务必注明本文出自:程序员学架构(微信号:archleaner)
分享到:
相关推荐
负载均衡调度算法是实现负载均衡的关键技术。 传统的负载均衡算法,如轮询(RoundRobin)算法,虽然简单快速,但由于没有考虑到节点间不同的处理能力和负载情况,因此很容易导致负载不均衡。遗传算法(Genetic ...
在当前的IT行业中,分布式系统技术已经成为了一种不...在此基础上,分布式动态负载均衡调度算法的提出和实施,为集群系统提供了一种新的选择,尤其在需要高效、智能处理高并发请求的场景中,这类算法将发挥显著的作用。
一、LVS负载均衡调度算法 LVS(Linux Virtual Server)系统是一个开源项目,它采用基于IP层负载均衡的调度方法将TCP/IP请求均衡地分配到不同的真实服务器(Real Server,简称RS)上,负载均衡器自动屏蔽掉真实...
《一种网格资源负载均衡调度算法》探讨了在网格计算环境中如何有效地实现资源的调度,以达到负载均衡,提高系统性能。网格计算是一种分布式计算形式,它整合了分布在不同地理位置的计算资源,形成一个虚拟的大规模...
【自学习负载均衡调度算法】是一种智能优化策略,旨在解决GPU异构集群中的作业调度问题。该算法通过自我学习和适应,能够根据集群中各节点的实际状态和负载情况,动态调整作业分配,以达到减少作业执行时间,提高...
【摘要】中的“基于任务图的多处理器负载均衡调度算法”是指在多处理器系统中,为了解决处理器之间的负载不均问题,通过使用任务图作为调度的基础,提出的一种新的调度策略。任务图是一种图形表示,它将计算任务表示...
负载均衡调度算法的仿真与比较.pdf
本文研究了基于Hadoop的物流库存动态负载均衡调度算法。针对传统分布式物流库存系统中存在的响应时间长、作业调度负载不平衡以及实现效率低的问题,作者提出了一个基于心跳反馈的Hadoop动态负载均衡调度算法。该算法...
在整个虚拟实验平台中,各后台节点组成一个相当大的集群系统。...并对负载均衡调度算法做了改进。 实验测试表明,以“CPU利用率*连接数”为负载指标的调度策略同常用的轮转以及最小连接数调度策略相比有明显的优势。
本文提出了一种针对分布式工作流引擎的负载均衡调度算法,旨在解决不同节点间工作负载不均的问题。传统的轮询算法虽然简单,但在面临负载变化时可能会导致某些节点过载,而其他节点则空闲。与之相比,该新算法能够更...
随着云计算的蓬勃发展,针对云计算中虚拟机负载不均衡及任务集完成时间较长的问题,提出了一种基于蚁群优化的任务负载均衡调度算法(WLB-ACO)。首先基于当前虚拟机的资源利用情况判断虚拟机的负载状态,其次,根据...
LBL-CR(Locality-Based Least Connection with Replication)是一种基于局部性和连接数的负载均衡调度算法,通过将客户端的请求转发到最少连接的服务器,实现负载均衡。 (7)、DH DH(Destination Hash)是一种...
负载均衡调度器的主要任务是根据特定的算法将来自客户端的请求均匀地分发到各个服务器,以防止某一台服务器过载而其他服务器资源未得到充分利用。在这个程序中,采用了多线程技术,以提高并发处理能力。 首先,代码...
本文研究了基于动态负载均衡的分布式任务调度算法,旨在解决传统分布式任务调度中节点负载不均衡问题,从而提高系统性能。 动态负载均衡是指在任务调度过程中,根据系统内各节点的实时性能指标,如CPU利用率、内存...
基于负载均衡的CPU-GPU异构计算平台任务调度策略 在异构计算平台中,CPU和GPU之间的负载不均衡问题是一个常见的问题,会导致系统性能下降。为了解决这个问题,提出了一种基于队列的混合调度策略。该策略通过探测...
为了保证用户请求的快速响应并平衡联盟内部的负载,粒子群算法(Particle Swarm Optimization,PSO)被用来优化CCF的负载均衡调度策略。 粒子群算法是一种模拟鸟群捕食行为的仿生优化算法,由一系列粒子组成搜索...