一种基于健康度的负载均衡算法在图书馆多媒体中的应用
郭政慧
河南理工大学计算机科学与技术学院 焦作 454000
摘要

为解决图书馆中流媒体服务集群中用户数量多和负载率不平衡的问题,研究多种负载均衡算法,针对图书馆多媒体这一特点,提出一种健康度检测和区间溢出预估的动态负载均衡算法。该算法采用历史负载率计算采样间隔,采样后划分负载率区间,然后依据集群组建模式给区间加权和分配健康度,并结合区间溢出触发计算负载率,均衡多媒体服务集群负载。

关键词: 负载均衡; 流媒体; 健康度
Application of a Healthy Load Balancing Method in Library Multimedia Service
Guo Zhenghui
College of Computer Science and Technology, Henan Polytechnic University, Jiaozuo 454000, China
Abstract

There are several problems existing in streaming media service in library, such as mass users and the unbalanced load. The paper researches a variety of load balancing methods, then presents a dynamic load balancing method. The method calculates utilization rates of each service by using dynamic feedback principle,which combines with historical data to select the suitable sampling interval, then divides appropriate space of resources utilization rate according to weighted round-robin scheduling and interval random round-robin scheduling, finally achieves concurrent access to resources for the numerous users.

Keyword: Load-balancing; Streaming; media; Healthy
1 引 言

随着信息化技术的发展,教育和学习模式发生了根本性的改变,图书馆多媒体资源[ 1, 2, 3]相比于文字资源,更能为读者带来丰富生动的信息,但是也出现了新的问题。以100M网卡为例,1.2M理论上可以支持83个用户,但现实情况下网卡不能以足额运行,因此带宽已经变成服务运行的瓶颈。解决方案有两种:提升服务器的总体性能,但单台设备性能的提升无法满足用户的需求;采用服务集群,动态改变服务器数量,承担用户的并发请求。但这又会出现另一个问题,即如何在这些服务器集群中平衡负载,并依据服务器的能力把负载合理分配到集群中的机器上[ 4, 5]。要解决此问题,必须考虑图书馆多媒体服务实际运行环境。因此,本文设计了一种基于健康度的动态反馈负载均衡算法,该算法能根据服务器负载能力、网络路径和健康度,把用户请求分配到集群中的某一服务器上,并能避免故障节点。

集群服务的目标是把负载合理地分配到集群中的节点上,减少数据访问瓶颈并提高并发访问数量,为此学者们提出了多种负载均衡机制,其中主要有静态负载均衡算法和动态负载均衡算法。静态负载均衡算法典型的有轮询法和随机分配法,以及由此类方法改进的加权优先类算法。这类算法的缺点是没有考虑用户规模和服务器当前负载,有可能出现负载倾斜,且不能判断服务器的故障行为;优点是实现简单,易于配置。动态负载均衡算法典型的有最小连接法、最小带宽法、最快响应法和动态反馈法等,以及由这些方法改进的加权优先算法。这类算法的优点是引进动态反馈机制,能动态监视服务器的当前负载能力,并根据策略做出请求分配[ 6, 7, 8, 9, 10, 11];缺点是缺乏通用性,不适合所有环境。基于以上理论分析,考虑到图书馆多媒体服务集群中影响较大的网络带宽、最短路径、健康度和采样间隔,本文利用区间溢出与历史负载率计算采样值互补的方式,实现多媒体服务集群环境下的一种负载均衡算法。

2 流媒体服务集群组建模式

图书馆多媒体服务集群组建模式设计采用主从层次分布式架构,关键部件由负载均衡设备和分布式多媒体服务集群组成。负载均衡设备运行本文设计的多媒体负载均衡算法,它能从多媒体服务集群中选择一个网络路径和负载率最轻的健康服务器,供客户端与服务器直接通信。分布式多媒体服务集群由多台服务器以分层方式组成,呈现树状结构,其中流媒体服务节点1和流媒体服务节点2即是双机热备,也是其他流媒体节点的根节点。这种设计模式既保证服务不间断,又能通过负载均衡算法从服务集群中选出最佳服务单元。图书馆多媒体服务集群组建模式如图1所示:

图1 多媒体服务集群

3 基于健康度的负载均衡算法设计
3.1 负载值计算

流媒体集群服务中有N台服务器,则服务器集合为SERVER = { Si | i = 1, 2, 3, …, n }。每台服务器Si考查的主要性能指标参数为CPU、内存、网络吞吐量,CPU的利用率表示为Load(Ci),内存利用率表示为Load(Mi),网络吞吐率表示为Load(Ni),由于流媒体连接数与流带宽在网络带宽固定情况下成反比,其他I/O操作等小影响参数也与CPU有关,故计算负载率时不予考虑这些参数。这些参数比重值集合为:

w={ w | j=1, 2, 3, ∑wj =1,wj≥0 }

该比重值越大代表该项参数越重要,则第i台服务器的基本负载率为:

Load(i)=w1×Load(Ci)+w2×Load(Mi)+w3×Load(Ni)

本文对每个服务器引入健康度值a,a的取值为:

a=

则第i台服务器的综合负载率为:

LOAD(i) = a×Load(i)

服务器集群综合负载率集合为:

LOAD = { LOAD(i) | i = 1, 2, 3, …, n }

这里的LOAD(i)值位于区间[0,1),0值代表服务器i服务故障,LOAD(i)值从小到大表示服务负载率轻重程度,理想状态情况下,不分层时达到平衡状态时应为:

LOAD(1) = LOAD(2) = … = LOAD(i) = LOAD(n)

实际情况下并不能达到这种理想的平衡状态,在分层的分布式流媒体服务集群系统中也不需要这种平衡状态。根据实际服务运行环境,需从根层到叶子节点层对流媒体服务集群进行层次式划分,层权值按从小到大分配为W0 < W1 < …< Wj,划分后综合负载率分布空间应为:

{LOAD(1j) | j=1,2,…,n}< {LOAD(2j) | j=1,2,…,n}< {LOAD(Nj) | j=1,2,…,n}

其中,LOAD(Nj)为第N层第j个服务器,在同一层次中,即路由距离相等的集合中,算法目标是本层负载平衡,而从根层到叶子层,算法目标是负载率大小变化一致于权重大小变化。节点服务负载率不能超过服务负载能力,如果预估超出区间溢出,由上层服务。

3.2 基于健康度的动态反馈算法

负载均衡调度目标是把用户请求转发到服务集群中路径负载率最轻的服务节点上,其中定时获取T值影响服务负载率的计算。若T过大,负载率值更新不及时,导致集群中服务负载率不均衡;若T过小,频繁获取服务相关参数会开销过多资源,影响服务负载率(相比较其他资源而言,主要是CPU资源消耗)。基于健康度的动态反馈原理如图2所示:

图2 动态反馈原理

服务集群中节点负载率的计算关键是T值, T值选取结合如下两种方法:

(1)依据历史负节点载率,在某一时刻下,节点i昨天负载率为Li1,前天负载率为Li2,大前天负载率为Li3,则节点i的历史平均负载率为:

Li = (Li1 + Li2 + Li3) / 3

定时T值的取值函数为:

F(Li)= m×Li + n,T = F(Li),m < 0,m,n为常数

m绝对值越大,线性递减速度越快,T值随负载率变化越快,因此T值随着历史负载率的变化自动调整取值。

(2)对于整个分布式流媒体服务集群按层次式划分区域,同层为同一区域,同区域按负载率大小划分为4个区间,分别为:

[0, 0.3, t],[0.3, 0.6, t],[0.6, 0.8, t], [0.8, 1, t]

这4个区间代表轻负载、适度负载、重负载和负载临界转移区间,算法在同一个区间内采取随机轮询分配,其中t为定时获取T的值。采集节点数据后,负载均衡计算负载率并把节点分配到相应区间,给t赋新T值,并开始预估节点负载率。

动态反馈算法结合上述两种办法一块执行,方法是负载均衡运行时,初始以历史负载率计算的T值为采样间隔并计算节点负载率,同时T时刻的值写入区间内t值,并置节点于相应负载率区间,然后预估节点负载率,利用溢出区间与T值相结合方式进行下一轮负载率计算。

3.3 算法步骤

负载均衡算法开始运行时,从根层到叶子层,分别给每个层分配权值,并配置各层区域的4个负载率区间,同时计算服务集群中的所有节点负载率,并把节点置于相应层的相应区间中,然后执行以下过程:

(1)依据历史负载率计算新T值,并以T值为采样间隔,计算下一次采样时间;

(2)在T值内,预估节点负载率,如果无请求,继续步骤(1);

(3)请求到达负载均衡,根据静态路由表判断用户所属服务区域,然后从区域内随机选出负载率最轻的不为0的健康的节点,同时预估此节点的负载率;

(4)在T值内,如果此预估负载率没有超出区间范围,以T值采样,继续步骤(1);

(5)在T值内,如果此预估负载率超出区间范围或进入临界转移区间,触发采样,继续步骤(1);

(6)如果本层中所有节点负载率都达到临界区或负载率全为0,后续请求将从权值小的上层中选择负载率较小的节点,直至根节点,触发采样,继续步骤(1)。

4 结果分析

为了验证本算法,按图1部署分布式流媒体服务集群,负载均衡部署于图书馆技术中心,它配置虚IP地址对外服务,同区域流媒体服务器硬件配置相同,如表1所示:

表1 各区域服务器配置表

实验准备了20个节目流,每个流1.1M,为了测试服务器的性能值,由一个节点完全对外服务,达到一定上限时,同时服务878个流的情况下,CPU平均利用率为35%,内存利用率为38%,但网络利用率高达96.5%,故本负载均衡算法采用参数比重0.05 : 0.05 : 0.9,定时获取T值的范围区间采用[5s, 30s],计算集群中节点负载率。

负载均衡服务集群综合负载率实验结果如图3所示:

图3 服务器集群负载

实验结果验证了本负载均衡算法在一天内不同层次区域负载率随时间变化的一致性,并基于最短路径原则服务,在节点间平滑过渡,抖动性小,不会突然出现某一节点负载率高,而其他节点负载低的情况。在多媒体阅读室二区域内,取一天内节点的流数目,即OID(.1.3.6.1.4.1.311.1.7.13.3.0)值,验证了该算法在同层次区域内节点上负载平衡,各个节点用户数平均分配,能正常完成负载均衡任务。实验结果如图4所示:

图4 区域内负载均衡

5 结 语

本文在图书馆多媒体环境下,分析常用的负载均衡算法,提出多媒体环境下一种改进的基于健康度的负载均衡算法,该算法在分布式多媒体服务集群架构下,构建层次区域权值和区域内负载率空间分区,然后计算节点健康度负载率,并置节点于某一负载率区间,然后利用历史节点负载率计算动态采样T值和预估节点负载率的区间溢出相结合的方法重新计算负载率,实现负载均衡。该算法能提供最短路径和负载均衡服务,能在本层节点进入临界转移区间情况下,由上层权值较小的节点提供服务,同时重新计算负载率,置节点于相应区间。实验结果证明,该算法在图书馆能基于最短路径实现不同层次区域节点负载率一致性、同区域内节点负载率相同性,并计算节点健康度,避免节点故障。

参考文献
[1] 巩林立. 流媒体技术在图书馆的应用[J]. 现代图书情报技术, 2005(3): 79-81.
(Gong Linli. The Application of Media Stream Technology in Library[J]. New Technology of Library and Information Service, 2005(3): 79-81. ) [本文引用:1] [CJCR: 1.073]
[2] 韩丽. 数字图书馆IPTV服务价值和服务策略探析[J]. 图书馆论坛, 2011, 31(5): 67-69.
(Han Li. Analysis of the Service Value and Strategies on Digital Library IPTV[J]. Library Tribune, 2011, 31(5): 67-69. ) [本文引用:1] [CJCR: 2.213]
[3] 任平, 林佳, 赵呈刚. 图书馆多媒体资源管理与服务平台建设实践——以清华大学图书馆为例[J]. 现代图书情报技术, 2007(6): 79-82.
(Ren Ping, Lin Jia, Zhao Chenggang. Establishment of Library Multimedia Resources System for Management and Service ——Taking Tsinghua University Library as an Example[J]. New Technology of Library and Information Service, 2007(6): 79-82. ) [本文引用:1] [CJCR: 1.073]
[4] 马宁. 动态反馈负载均衡算法的研究[J]. 华中科技大学学报: 自然科学版, 2010, 38(2): 30-33.
(Ma Ning. Dynamic Load Balancing Using Feedback Control Mechanisms[J]. Journal of Huazhong University of Science and Technology: Natural Science Edition, 2010, 38(2): 30-33. ) [本文引用:1] [CJCR: 0.502]
[5] 张鹏伟, 陈景霞, 贾小云. SOA中一种带有预测功能的自适应负载均衡算法[J]. 微电子学与计算机, 2011, 28(11): 174-177.
(Zhang Pengwei, Chen Jingxia, Jia Xiaoyun. A Prediction Based Adaptive Load Balancing Algorithm in SOA[J]. Microelectronics & Computer, 2011, 28(11): 174-177. ) [本文引用:1] [CJCR: 0.2451]
[6] 朱利, 张兴军. Web服务器组的负载均衡方法研究[J]. 小型微型计算机系统, 2003, 24(12): 2096-2099.
(Zhu Li, Zhang Xingjun. Research on Load Balancing Mechanisms for Cluster-based Web Servers[J]. Mini-micro Systems, 2003, 24(12): 2096-2099. ) [本文引用:1] [CJCR: 0.46]
[7] 张立岩, 杨国霞, 郑琨. 基于集群的Web服务负载均衡算法研究[J]. 河北科技大学学报, 2010, 31(3): 252-255.
(Zhang Liyan, Yang Guoxia, Zheng Kun. Research of Load Balancing Technology for Web Server Cluster Systems[J]. Journal of Hebei University of Science and Technology, 2010, 31(3): 252-255. ) [本文引用:1] [CJCR: 0.5899]
[8] 刘松, 钟珞. 一种基于服务类型的Web集群负载均衡算法[J]. 武汉理工大学学报, 2009, 31(19): 134-136, 159. (Liu Song, Zhong Luo. Web Cluster Load Balancing Algorithm Based on Service Type[J]. Journal of Wuhan University of Technology, 2009, 31(19): 134-136, 159. ) [本文引用:1] [CJCR: 0.529]
[9] 郭成城, 晏蒲柳. 一种异构Web服务器集群动态负载均衡算法[J]. 计算机学报, 2005, 28(2): 179-184.
(Guo Chengcheng, Yan Puliu. A Dynamic Load-Balancing Algorithm for Heterogeneous Web Server Cluster[J]. Chinese Journal of Computers, 2005, 28(2): 179-184. ) [本文引用:1] [CJCR: 1.796]
[10] 廖羽, 戴瑜兴. 基于内容的分布式Web服务器负载平衡算法[J]. 电子学报, 2006, 34(6): 1053-1057.
(Liao Yu, Dai Yuxing. A Load Balancing Algorithm Based on Content for Distributed Web Server[J]. Acta Electronica Sinica, 2006, 34(6): 1053-1057. ) [本文引用:1] [CJCR: 0.686]
[11] 杨光, 周敬利. iSCSI系统中动态反馈负载均衡算法[J]. 华中科技大学学报: 自然科学版, 2010, 38(10): 9-12.
(Yang Guang, Zhou Jingli. Feedback Control-based Dynamic Load Balancing in iSCSI Systems[J]. Journal of Huazhong University of Science and Technology: Natural Science Edition, 2010, 38(10): 9-12. ) [本文引用:1] [CJCR: 0.502]