计算机与现代化2012年第1期JISUANJIYUXIANDAIHUA总第197期:1006-2475(201201-0135-05收稿日期:2011-10-12作者简介:周松泉(1986-,男,广东汕头人,南昌航空大学软件学院硕士研究生,研究方向:计算机网络及其应用。一种改进的集群动态负载均衡算法周松泉(南昌航空大学软件学院,江西南昌330063摘要:在集群系统的研究中,负载均衡算法是一个重要的方向,因为它关系到多台服务器在整合成一个集群系统后能否很好地相互协作,以更好地完成用户交予的任务。为实现上述目的,本文在分析已有的负载均衡算法基础上,提出一种改进的能够实时收集服务器负载指标,进而动态地计算出服务器在分配用户连接中的权重的方法。测试结果表明,该方法能够有效地防止服务器倾斜,达到良好的负载均衡效果。关键词:集群;负载均衡;动态调度算法:TP393文献标识码:Adoi:10.3969/j.issn.1006-2475.2012.01.036AnImprovedDynamicLoad-balancingAlgorithmforClusterZHOUSong-quan(SchoolofSoftware,NanchangHangkongUniversity,Nanchang330063,ChinaAbstract:Inthestudyofclustersystem,theload-balancingalgorithmisanimportantdirection,becauseitisrelatedtowhetherthemultipleservers,afterintegratedintoaclustersystem,areabletocollaboratewelltobettercompletethetasktheuserssub-mit.Toachievethisgoal,thepaper,basingontheanalysisoftheexistingload-balancingalgorithms,proposesanimprovedload-balancingalgorithmthatcandynamicallycollectthereal-erverloadindexesthencalculatetheweightsoftheserversintheassignationoftheconnectionrequestsuserssubmit.Thetestresultsshowthattheimprovedmethodcaneffectivelypreventtheserversfromtiltandachieveagoodload-balancingeffect.Keywords:cluster;loadbalance;dynamicschedulingalgorithm0引言随着互联网的快速发展,上网用户每天都在不断增长,网络中的服务器变得越来越不堪重负,而构建集群就成为了应对这一趋势的重要手段。但如何使整合后的服务器集群实现负载均衡呢?在这方面,Linux内核中已经存在多种调度算法。[1],如:轮询调度算法、加权轮询调度算法、最小连接调度算法、加权最小连接调度算法。但是这些调度算法仍然存在缺陷,采用这些算法的集群在运行过程中会出现服务器负载不平衡的现象。因此,有必要对这些算法加以改进,以更好地实现服务器的负载平衡,使集群的效能得到更加充分的发挥。1常见的负载均衡算法1.1轮询调度算法轮询调度算法将用户的连接请求均匀、顺次地转发给各台处理服务器。该算法简单清晰,以连接为调度单位,是一种细粒度的调度算法[2]。在服务器性能相似,并且所请求任务不是很重的时候,该算法对服务器负载的均衡效果较好。但如果服务器的性能相差较大,该算法容易导致服务器的负载不平衡。1.2加权轮询调度算法加权轮询调度算法考虑到了服务器处理能力的不同,引入了服务器权重的概念。权重值的大小代表服务器处理能力的强弱,权重值越大则代表服务器处理能力越强。在客户连接请求分配中,高权重值的服务器会得到比低权重值的服务器更多的连接请求[3]。这在一定程度上可以缓解由于服务器处理能力不同对调度算法平衡效果造成的不利影响。但由136计算机与现代化2012年第1期于不同的连接请求在服务器上的运行时间各不相同,导致在各台服务器上积累下来的连接数量并不相同,这也会导致服务器负载的不平衡。所以加权轮询调度算法在负载较轻的集群系统中表现较好,但如果运用在负载较重的集群上或偶尔计算量较大的连接请求被分配到同一台服务器上,集群同样会出现负载不平衡的现象。1.3最小连接调度算法最小连接调度算法考虑到服务器的实时负载状况,负载均衡器将新来的用户连接请求总是分给当前已有连接数量最少的服务器[4]。但如果服务器性能差别较大,该算法会造成服务器负载的不均衡。1.4加权最小连接调度算法加权最小连接调度算法在集群的实际使用中是最常用的负载调度算法。与加权轮询调度算法类似,该算法引入了服务器权重,以权重值的大小来代表服务器的剩余处理能力的强弱,权重值越大则服务器剩余处理能力越强,也即表示该服务器的当前...