基于云模式的负载均衡策略研究

2011-08-08 12:48刘晔沈潇军刘摩西
电脑与电信 2011年12期
关键词:均衡器机器分配

刘晔 沈潇军 刘摩西

(浙江省电力公司信息技术中心,浙江 杭州 310007)

1.引言

应用的发展始终是推动负载均衡技术不断进行的原动力。随着分布式网络计算在航空、金融、电力等行业的广泛应用,主流的网络负载均衡系统不能满足这些领域在高吞吐量、资源的高利用率和系统高可用性方面的要求。这些客观现实推动了云计算平台下负载均衡的研究。近几年来,基于云模式的负载均衡研究已经成为一种主流的研究方向,该技术具有可用性、扩展性、分布性等特点,将云计算和负载均衡有机结合,不但保留负载均衡的特点,还加入了云计算所带来的新功能。

2.负载均衡模型

2.1 负载指标

负载均衡就是通过一定的机制将系统流量负载分配到不同的网络服务器上处理,为大量用户提供并发访问服务,它是实现多台网络服务器协同工作和并行处理的手段,其核心思想是根据当前网络服务器的负载情况,将到达的大量负载请求分配到不同的服务器上进行处理,以减轻单个服务器的处理负担,从而提高服务器性能,使资源得到最大利用效率。

常用的负载指标(Index)包括CPU利用率、CPU就绪队列长度、进程的响应时间、内存使用情况和磁盘访问频度以及I/O利用率等,还需要考虑异构节点的处理能力上的差别。通过对这些指标的综合评价,就可以得到某台主机的负载大小。通常,有以下三种综合评价的方法:

(1)优先级法

按负载指标优先级的高低比较,确定节点的负载轻重情况(其中优先级的高低可根据负载情况和具体的应用问题进行动态调整定时/不定时)。

(2)分类算法

根据任务的性质(计算密集型CPU类、I/O类等),确定主负载指标。CPU类:以CPU利用率、CPU队列长度为权重负载分量;I/O类:以磁盘读写速率,磁盘访问频率以及磁盘可用空间为权重负载分量;Mem类:以Free Memory和Menory Swap频度为主要指标。

(3)权重向量法

节点负载使用下面的公式来表示:

其中:L表示本地节点的负载值;a1,a2,…,ai分别是选定的负载分量(负载指标);k1,k2,…,ki分别是权重。通常来说,对于用户事先指定的主负载指标,权重较大。

2.2 负载均衡的策略

负载均衡策略大致包含以下四种:轮询策略,比率策略,最小连接数策略和最快响应时间策略。

在轮询策略中,如图1所示,调度器不考虑目标接点的负载状态,将外部的请求均匀地分摊到各个服务器上面,如:有2台服务器实现负载均衡,那么2台服务器接受处理的请求数量为1∶1。这种算法适用于做负载均衡的几台服务器硬件配置相同,它们可以平均分摊所有流量。该方法实现简单,算法简单,系统开销小。但只适用于作业大小差异小,作业执行时间较短的情况。

图1 轮询策略负载均衡示意图

在比率策略中,将外部请求安装预先设定好的比率分摊到各个负载均衡的服务器上,如:有3台服务器做负载均衡,设定他们接收处理请求的比率为1∶2∶3,那么每台服务器处理的请求是不同的。这种算法适用于做负载均衡的几台服务器硬件配置不同,按照他们的处理能力,设定比率,从而使得性能高低不同的服务器都能够平稳运行,不会出现个别服务器负载过重,而另外的服务器负载过少的情况。

在最少连接数策略中,负载均衡的硬件设备会不断地检测进行负载均衡的几台服务器上的连接数的数量,将新的请求转发到连接数最少的服务器上面。这种算法适用于应用为长连接的情况。

在最快响应时间策略中,负载均衡的硬件设备会不断地检测进行负载均衡的几台服务器中,哪台服务器响应速度最快,从而将请求转发到响应时间最快的服务器上面。这种算法适用于每台做负载均衡的服务器都能够在很短的时间内处理完请求,没有性能的问题。

3.云计算下的负载均衡实现

3.1 动态加权调度策略

在动态加权轮询调度 (Dynamic Weighted Round-Robin Scheduling,DWRR)策略中,算法综合考虑了机器服务能力的差别,对所有成员服务器的处理能力进行评估,给出相应的权重。权重大表明该服务器能处理更多作业。根据服务器的权重在所有服务器权重中所占有的比例(即机器处理能力在所有机器中占有的百分比)高低顺序,按照轮询的方式将请求分配到服务器上执行。权重高的机器比权重低的机器处理更多的请求,相同权重的机器处理相同份额的请求。DWRR算法的基本原理可描述为:假设某集群内有一组节点N={N1,N2,…,Nn}。W(Ni)表示节点Ni的权值,指示变量i表示上一次选择的服务器,T(Ni)表示节点Ni当前所分配的任务量。∑T(Ni)表示当前同步周期需要处理的任务总量。∑W(Ni)表示节点的权值总和。则W(Ni)/∑W(Ni)=T(Ni)/∑T(Ni)表示任务的分配是按照各个节点权重占权重总数的比例来进行分配。

3.2 权重计算

当集群的节点初次投入系统中使用时,系统管理员根据节点的硬件配置情况对每个节点都设定一个初始权重W0(Ni),硬件配置越高初始权重越高。然后随着节点负载的变化,均衡器对权重进行调整(叠加动态权重)。动态权重是由节点运行时各方面的参数计算出来的。在实验中选取了最重要几项指标,包括CPU资源、内存资源、当前进程数、响应时间等信息作为计算公式的因子。结合每个节点当前权重,可以计算出新权重的大小。动态权重目的是要正确反映节点负载的状况,以预测节点将来可能的负载变化。对于不同类型的系统应用,各个参数的重要程度也有所不同。如果用户以作业处理为主,则CPU使用率、可用内存和磁盘I/O效率就相对重要一些。为了方便在系统运行过程中针对不同的应用对各个参数的比例进行适当调整,我们为每一个参数设定一个常量系数Ki,用来表示各个负载参数的重要程度。系统任何一个节点Ni的动态权重公式如下所示:

其中LCPU(Ni)表示节点Ni当前某一项指标的负载值,上述公式中依次表示为:CPU使用率、内存使用率、磁盘I/O访问率、进程总数以及响应时间。例如,在作业处理服务器集群中,我们采用系数序列{0.4,0.4,0.3,0.1,0.1},认为服务器的CPU占用、I/O访问和内存较其他参数更重要一些。若当前的系数Ki不能很好地反映应用的负载,系统管理员可以对系数不断地修正,直到找到贴近当前应用的一组系数。对于节点需要分两种情况:一种是机器组的管理者机器,一种是机器组的管理对象机器,由于机器组的管理者机器承担着管理整个机器组的重任,担任均衡器和调度者的角色,因此进行负载均衡时,应该减少管理者机器的权重,从而在调度过程中有利于调度者机器。

另外,关于采集权重的周期置,虽然周期越短越可以确切地反映各个节点的负载,但频繁地采集会给均衡器和节点带来负担,也可能增加不必要的网络负载。为解决这些问题,一方面要适当调整采集负载信息的周期;另一方面,可以使用移动平均线或者是滑动窗口来避免抖动,使得均衡器收集到的负载信息表现为平滑曲线,这样在负反馈机制的调整效果上就会比较好。均衡器的动态权重采集程序周期性地运行,若缺省权重不为零,则查询该节点的各负载参数,并计算出动态权重。引入以下权重计算公式,结合节点初始权重LOAD(Ni)和动态权重来计算最终的权重结果。

在公式中,如果动态权重恰好等于初始权重,最终权重不变,则说明系统的负载状况刚好达到理想状况,等于初始权重W0(Ni)。如果动态权重计算结果高于初始权重,最终权重变高,则说明系统负载很轻,均衡器将会增加分配给该节点的任务比率。如果动态权重低于初始权重,最终权重变低,说明系统开始处于重载状况,均衡器将会减少对该节点分配的任务。在实际使用中,若发现所有节点的权重都小于他们的W0(Ni),则说明当前集群处于超载状态,这时需要加入新的节点到集群中来处理部分负载;反之,若所有节点的权重大大高于W0(Ni),则说明当前系统的负载都比较轻。

3.3 实验结果

本节模拟了一个云计算的运行环境,其中一个内部结点负载较重,而其它两个内部结点负载较轻,以验证提出的基于反馈的动态负载均衡算法的效果。首先,为模拟上述的实验条件,对选定的重载节点进行单独加压的操作,即在一台云外部的客户端上使用测试工具,定时向该节点发送请求,以模拟出该节点正在被用户访问而使得性能下降的情况,该测试工具还能够监视发送请求的数量和有效响应的数量。实验中,作者使用测试工具对重载节点发送总共20万个http请求,每秒1000个,发出请求后,发现重载节点的可用内存和CPU空闲比已经开始下降,服务器基本忙于响应http请求,文件访问和网络访问也变得缓慢,已经达到模拟一个重载节点的效果。

随后,启动了云平台并且把重载的节点和其它需要被测试的轻载节点一同加入平台中,并设置相同的初始权值,在负载平衡器上将重载节点作为有效的服务节点添加以便接收平衡器分配的任务。此时集群的其它两台服务节点没有运行任何重载任务,软件配置完全相同,基本处于空闲状态。另外,用另一台云平台外部的测试节点,向平台并行发出http请求,模拟集群响应客户的情况,并观察平台平衡器给每个节点分配的任务数量,平衡器每隔10秒记录一次各个节点响应的情况,实验中向整个云平台发出100万的http请求,每秒发出5000个并行请求,平衡器可以检测到各个节点的负载状况。图2给出实验结果,图中节点1和节点2都是预先没有负载的轻载节点,可以看出二者在任务的分配上基本接近,而重载节点接受任务的权值比例明显少于另两个节点,因此在总体分配的任务数量上也少于其它两个节点。这说明提出的基于反馈的负载均衡算法是有效的,可以有效地按照云平台中各个节点的负载情况动态地接受任务。

图2 基于反馈的动态负载均衡算法的实验结果

4.结束语

本文论述了云计算模型下负载均衡策略的原理,在多种主流的负载均衡策略的基础之上,提出了基于反馈的负载均衡策略。实践证明,采用新的负载均衡策略后系统在整体吞吐量方面有所提高,特别是在系统各个节点性能不一、系统提供的网络服务所访问的资源多样化的情况下,基于反馈机制的效果尤其明显。

[1]“The Network Queuing System”.Brent A.Kingsbury.Sterling Software,1992.

[2]须成忠,张德富,孙钟秀.“一种分布式动态负载平衡算法”[J].软件学报,1993,2.

[3]刘海龙,张延园,汤小春.“高性能计算环境下基于远程I/O负载平衡调度算法”[J].计算机应用研究,2005.9.

[4]W.Richard Stevens.UNIX网络编程 (第一卷套接字API和X/Open传输接口API)[M].清华大学出版社,1999.

[5]W.Richard Stevens.UNIX网络编程(第二卷进程间通信)[M].清华大学出版社,2002.

猜你喜欢
均衡器机器分配
机器狗
基于Kalman滤波的水声混合双向迭代信道均衡算法
机器狗
应答器THR和TFFR分配及SIL等级探讨
遗产的分配
一种分配十分不均的财富
未来机器城
无线传感网OFDM系统中信道均衡器的电路实现
一种基于LC振荡电路的串联蓄电池均衡器
我会好好地分配时间