动态负载均衡(通用10篇)
动态负载均衡 篇1
摘要:针对现有服务器集群的负载平衡算法不足,提出一种应用层自适应动态负载平衡算法。利用应用层特点,在负载均衡服务器端收集应用服务器负载信息,提出一种综合的权重计算方法,动态区分不同状态的服务器。通过自适应选择算法,合理分配请求至应用服务器。实验结果表明,在不同的负载情况下,该算法能有效地平衡负载,充分利用服务器资源。
关键词:动态负载均衡,自适应,应用层,服务器集群
0 引 言
随着计算机和Internet的高速发展,网络服务已经逐渐成为主要的商业手段,服务器承载的信息量和访问量成几何级数增长[1],有效地利用服务器资源处理海量的访问请求是一个关键的问题,服务器集群成为一种能够提供高性能和高可靠性的解决方案。集群由多台互联的服务器组成,为Internet服务提供了数据冗余、服务能力冗余、内容分发等技术,多台服务器可以同时进行多个事务处理,提高了性能。以Web服务为例,用户的HTTP请求被均衡地、透明地分配到集群中具体的服务器上执行,并将结果返回给用户。由于集群中服务器数量的众多,需要通过有效的负载均衡算法,将用户的请求合理的分配给这些服务器。由于集群中每台服务器的负载水平的不同,合理、均衡地分配任务到各台服务器上,并实时地将任务较多的分配到负载更轻的服务器上,从而平衡系统负载,提高系统的整体处理能力和服务质量是现在的重点研究内容。
1 研究现状
现有的负载均衡算法可以分为静态负载均衡算法和动态负载均衡算法。静态负载均衡算法按照固定的方式分配请求,它并不考虑应用服务器的运行状态,只是按照特定的或者理想的方式进行分配。一种常见的负载均衡算法是根据各个应用服务器的处理能力C1,C2,C3,…,Cn,按照概率
动态负载均衡算法[2]通过在一定的时间窗口内,不断更新应用服务器的状态信息,通过一定的方式计算出其负载,根据负载均衡算法,选择一台服务器处理请求。动态负载均衡算法更加符合现实场景,有效的分配请求,合理地利用应用服务器的处理能力。常见算法采用的负载因素有服务器连接数、服务器集群的LARD以及综合计算CPU、内存和硬盘运行状态[3]等,执行的动态负载均衡算法常见的有加权轮询(Weighted Round Robin)[4]、最小负载[5]、哈希[6]等。
文献[7]介绍了动态负载均衡算法Pick-KX,该算法从可用的服务器集群中随机挑选出K台服务器,之后按照其负载水平,依概率分配请求。Pick-KX算法无法在异构的服务器集群中发挥作用,其性能计算方法只适用于相同的计算机,并且依概率分配的方法随机性大,容易出现负载的波动。
文献[8]提出的动态反馈负载均衡算法,考虑了服务器的处理能力,同时实时计算服务器的负载,根据每台服务器当前负载比例值得出服务器动态的分配权值,按照分配权值加权轮询。该方法使用了负载向量和负载权值向量计算服务器负载,可以有效地实现动态的负载平衡。但是该算法的缺点在于负载向量有很多方向,考虑了大量的负载因素,这种情况下容易出现过拟合的问题,并且不重要的负载因素变化反而会影响算法的最终性能。
综合以上分析,我们需要确定更加有效的负载因素,可以正确地反映集群中计算的负载变化,避免使用随机和复杂的算法,减少人为因素的干扰,自适应地选择服务器。最终的目的是降低服务器集群系统的总体响应时间、提高吞吐量。本文主要探讨一种应用层自适应(ALAD)动态负载均衡算法,介绍该算法使用的负载因素和计算方式,讨论自适应选择算法的原理,并通过实验验证这些因素可以有效地反应系统的负载变化,证明自适应选择算法可以合理地分配负载,达到更好的负载平衡效果,更有效地利用系统资源。
2 ALAD动态负载均衡
ALAD动态负载均衡算法首先收集应用服务器的负载因素,计算综合负载权重,将该权重作为重要的参数,执行自适应选择算法,计算出每台应用服务器的饥饿度,选择饥饿度最大的服务器执行负载。本算法在计算负载因素时,充分考虑到应用层特点,并且没有人为设定的参数值,而是根据服务器的运行情况,自动适应各个服务器的负载水平,调整负载的分配方法。下面我们将详细介绍负载因素、综合负载权重的计算和自适应选择算法的具体内容。
2.1 负载因素
ALAD动态负载均衡算法所采用的负载因素以各个应用服务器的响应延迟为主要参考,将应用服务器的请求处理成功率和运行时间作为辅助因素。这三个因素均可以直接在负载均衡服务器上收集,通过收集的数据计算最终每一台应用服务器的综合负载权重。下面将详细叙述这三个因素的原理和综合负载权重计算方法。
(1) 响应延迟因素LatFact
假设一共有n台应用服务器S1,S2,S3,…,Sn,在负载均衡服务器端,可以检测到每台应用服务器处理请求的发送时间rsent、处理时间rproc和接收时间rreci,通过下式可以计算出每台应用服务器处理器请求的总体延迟时间lat:
lat=rsent+rproc+rreci (1)
总体延迟时间lat综合反映了应用服务器自身的负载状态以及负载均衡服务器和应用服务器之间的网络状态,lat值越小表明应用服务器的处理能力越强,网络状况越好。通过lat计算每台应用服务器的响应延迟因素LatFact:
较小响应延迟的应用服务器将会得到更大的响应延迟因素值。
(2) 成功率因素SuccFact
在负载均衡服务器端,记录每台应用服务器被选中处理请求的次数elct;每台应用服务器处理请求出错的次数fault。根据收集到的数据,计算应用服务器的成功率因素SuccFact:
成功率因素SuccFact体现应用服务器成功处理请求的概率,文献和实验均表明对于一台正常运行中的应用服务器有SuccFact≥0.9[9]。式中分子分母取100作为起始值能够避免刚开始运行的服务器由于偶然的出错而导致SuccFact大幅度下降。
(3) 连续服务时间因素TimeFact
在负载均衡服务器端,收集每台应用服务器连续提供应用服务的时间t,根据收集到的数据,计算所有应用服务器连续服务时间中的最大值tmax:
tmax=max(t1,t2,t3,…,tn) (4)
由tmax和t,计算应用服务器的服务时间因素TimeFact:
对于应用服务器,刚开始运行服务的服务器压力要小于已经运行了较长时间的服务器[9],因此应当将更多的请求分配给服务时间较短的机器。该公式根据应用服务器连续服务时间的不同,使得TimeFact∈[1,3],并且逐渐趋向于1。
(4) 综合负载权重LoadFact
负载均衡服务器收集应用服务器的性能数据,通过上面的定义计算出三个因素值,最后计算出每台应用服务器的综合负载权重LoadFact:
LoadFact=⎣LatFact×SuccFact×TimeFact」 (7)
综合负载权重LoadFact的值与当前应用服务器以及网络的负载能力成正比,在后面的自适应选择算法中,将被用于计算应用服务器饥饿度。
2.2 自适应选择算法
在自适应选择算法中,定义当前总请求数量为TotalRq。合理的负载均衡算法应当使得请求的分配情况可以按照每台应用服务器的LoadFact成比例进行,以充分发挥处理能力较强的服务器的性能,那么对于应用服务器应当有:
以此为目标,基于上文的综合负载权重LoadFact,定义应用服务器的饥饿度为hungry,计算公式如下:
通过计算得到应用服务器S1,S2,S3,…,Sn的饥饿度,就可以选择其中饥饿度最大的一台服务器λ,也就是使得λ满足:
hungryλ≥(hungry1…n)|λ∈[S1,S2,S3,…,Sn] (10)
服务器λ被选中后,将负载转交给它进行处理。结合上一节中介绍的负载因素和综合权重的计算,自适应选择算法的具体执行步骤如下:
Step 1 用户的请求R到达负载均衡服务器;
Step 2 负载均衡服务器收集应用服务器S1,S2,S3,…,Sn的运行信息,包括发送时间rsent、处理时间rproc和接收时间rreci;处理请求的次数elct;请求出错的次数fault;连续提供应用服务的时间t;
Step 3 由式(1)-式(6)分别计算每台应用服务器负载因素LatFact1…n、SuccFact1…n和TimeFact1…n,之后通过式(7)计算综合负载权重LoadFact1…n;
Step 4 根据Step 3得到的LoadFact1…n,由式(9)计算每台应用服务器的饥饿度,得到hungry1…n;
Step 5 根据式(10)选择饥饿度最大的应用服务器λ,满足hungryλ≥(hungry1…n)且λ∈[S1,S2,S3,…,Sn];
Step 6 将R分发给应用服务器λ处理,elctλ+1,如果λ出错,则faultλ+1,至此完成一次算法执行流程。
简单的测试显示,在例如有两台服务器A、B组成的集群,它们的综合负载权重LoadFact值分别为320和680,那么根据该选择算法,实际运行时的分配序列是ABAAABAABA…的循环。从结果序列可以看出其中70%的负载交给服务器A,30%的负载交给服务器B,表明该算法能够按照已经计算好的综合负载权值进行负载分配,并且具有稳定的结果序列。通过执行该算法,当所有应用服务器的选中次数均达到期望值,最终所有的应用服务器饥饿度均为0。
3 实验和结果分析
试验中我们一共使用6台计算机组成一个小型实验服务器集群,其中1台作为负载均衡服务器,1台作为数据库服务器,另外4台作为应用服务器。负载均衡服务器运行一个基于Apache HTTP Server的负载均衡服务程序,分别实现了本文提出的ALAD动态负载均衡算法、动态反馈负载均衡算法和静态加权轮询算法[10]。数据库服务器进行了专门的设置,可以支持并发1024个连接,使其不成为测试中的瓶颈。4台应用服务器运行Apache Tomcat服务,并且均部署了统一的J2EE测试应用,使用局域网络共享Session。4台应用服务器基准性能测试显示性能比为4∶4∶3∶3,我们将静态加权轮询算法中的权值按照此性能比进行设置。J2EE测试应用包含了Internet应用服务常见的页面生成、数据库访问和写入操作,代码来自于实际运行的系统。
实验中我们使用测试计算机并发大量请求,向负载均衡服务器发送HTTP POST数据,一共发送5000次。得到如图1所示平均响应时间。
图1中,横坐标表示测试时采用的并发连接数,分别是50、100、200、500和1000,纵坐标表示集群的总体响应时间,单位为毫秒(ms)。
响应时间图表明,在较低的并发连接情况下,应用服务器负载压力不大,三种负载均衡算法下均可以达到较短服务器响应时间。随着并发连接数的提高,应用服务器负载出现变化,4台服务器由于性能和负载水平的不同,响应延迟开始出现差别。静态加权轮询算法不能根据负载调整请求的分配,请求堆积在高负载的应用服务器上,使总体响应时间明显提高。动态反馈负载均衡算法能够调整负载的分配,但是由于其负载水平计算对真实的运行情况反映不够准确,甚至在某些情况性能不及静态算法。
本文的ALAD动态负载均衡的综合负载权重所选用的三个因素相比动态反馈算法中复杂的负载向量更能有效地反映当前应用服务器的负载,自适应选择算法合理地选择负载较轻的服务器,将负载更多地分配给两台性能较好的应用服务器,将总体响应时间控制在正常的水平。
实验中服务器集群的平均吞吐量结果如图2所示。
图2中,横坐标表示测试时采用的并发连接数,分别是50、100、200、500和1000,纵坐标表示集群的吞吐量,单位为MB/s。
在并发数量较低的情况下,由于实验用服务器性能较强,三种算法难以拉开差距。当并发连接数量逐渐增大,本文的ALAD算法逐渐显示出优势,当200个并发线程时,已经达到甚至超过测试服务器的承载能力,对比的两种算法开始出现性能下降,而ALAD算法仍然保持较高的吞吐量。在500和1000线程并发的高负载情况下,ALAD算法也能够提供高于对比算法的吞吐量。吞吐量的实验结果也证明了本文选择的三种性能因素可以有效地反应集群系统中应用服务器的负载情况,并且自适应选择算法能够有效的平衡负载,其实际表现优于对比的算法。
我们在实验中记录的ALAD动态负载均衡算法请求分配情况如图3所示。
图3中,横坐标表示测试进行的时间,纵坐标表示服务器被选中的累计次数。
从图中可以看出,本文采用的自适应选择算法将更多的请求分配给了性能较好的两台服务器,并且基本符合基准测试的4∶4∶3∶3的性能比例。分配情况比较平稳,没有出现大幅度波动的问题。
4 结 语
服务器集群已经成为提高Internet服务性能和可靠性的主要方案,负载均衡算法的优劣直接影响集群总体响应时间和吞吐量。本文介绍的ALAD动态负载均衡算法,通过收集应用服务器的负载因素,计算综合负载权重,将该权重作为重要的参数,执行自适应选择算法,计算出每台应用服务器的饥饿度,选择饥饿度最大的服务器执行负载,最终达到负载平衡的效果。ALAD动态负载均衡算法采用的三项负载因素能够有效地反映出应用服务器的运行情况,为自适应选择算法提供了关键的执行参数,保证了其有效性,实验验证了本方法能够平衡Web集群系统的负载、降低总体响应时间、提高吞吐量。不过ALAD算法实现的时间复杂度和应用服务器数量有关,在大规模的服务器集群中可能会出现负载均衡器的性能问题,因而计算方法需要更进一步优化,对ALAD动态负载均衡算法的改进将是我们下一步的研究内容。
参考文献
[1]Labovitz C,Iekel-Johnson S,McPherson D,et al.Internet inter-do-main traffic[C].ACM SIGCOMM conference,2010.
[2]Boudreau D,Borden J M,Philippou J A,et al.Network switch load balancing[P].US patent,6788692,Sept.2004.
[3]郑洪源,周良,吴家祺.Web服务器集群系统中负载平衡的设计与实现[J].南京航空航天大学学报,2006,38(3):348-351.
[4]Teo Y M,Ayani R.Comparison of load balancing strategies on cluster-based web servers[J].SIMULATION,November2001,77(5-6):185-195.
[5]Guo J N,Bhuyana L N.Load balancing in a cluster-based web server for multimedia applications[J].Parallel and Distributed Systems,IEEE Transactions,2006,17(11):1321-1334.
[6]Cao Z R,Wang Z,Zegura E.Performance of hashing-based schemes for internet load balancing[C]//Nineteenth Annual Joint Conference of the IEEE Computer and Communications Societies,2000.
[7]Cardellini V,Colajanni M.Dynamic Load Balance on Web-server Sys-tems[J].IEEE Internet Computing,2002,3(3):28-39.
[8]王春娟,董丽丽,贾丽.Web集群系统的负载均衡算法[J].计算机工程,2010,36(2):102-104.
[9]Fujii T,Dohi T.Statistical failure analysis of a web server system[C].Availability,Reliability and Security,2009.
[10]Apache HTTP Server Documentation[EB/OL].(2012-4-20).ht-tp://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html.
负载均衡新机会 篇2
你是否觉得网络负载均衡,跟你没有关系呢?
今天,每当你打一次手机,上主要门户网站看一次新闻,进行一次网上银行交易,你的访问信息就会经过负载均衡设备,它在后台保证了巨量的网络应用访问。负载均衡,英文名称为Load Balance,其意思就是将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。需要说明的是:负载均衡设备不是基础网络设备,而是一种性能优化设备。对于网络应用而言,并不是一开始就需要负载均衡,当网络应用的访问量不断增长,单个处理单元无法满足负载需求时,网络应用流量将要出现瓶颈时,负载均衡才会起到作用。
近几年来,网络负载均衡技术首先在电信、移动、银行、大型网站等单位进行了应用,因为其网络流量瓶颈的现象最突出。这也就是为何我们每通一次电话,就会经过负载均衡设备的原因。另外,在很多企业,随着企业关键网络应用业务的发展,负载均衡的应用需求也越来越大了。
Foundry最早提出了四层网络负载均衡的概念,当时的负载均衡技术主要实现四层的交换。因为Foundry是传统的交换机设备厂商,它将此项技术集成在了自己的交换机设备里。从此,网络负载均衡市场诞生了。
网络负载均衡是伴随互联网发展的全新技术,它使得一系列以核心新技术起家的小企业得到了快速发展。其中就包括F5、Radware、Array等系列新兴企业。当然,思科、北电等传统网络厂商也进入了这个市场。
据F5总裁John McAdam介绍:Internet的规模每一百天就会增长一倍,网络应用流量也越来越大。网络的各个核心部分随着业务量的提高、访问量和数据流量的快速增长,其处理能力和计算强度也相应增大,使得单一设备根本无法承担。如果将负载均衡这项技术应用在网络上,就一定会有一个大的发展。
几年的发展证明,网络负载均衡市场是一个巨大的技术商机。据Gartner 2007的调查数据显示,在网络应用交付(网络负载均衡)市场,F5占38.3%,而思科以27.2%位居第二。
网络负载均衡的机会在于网络应用的扩张,网络流量的增大,所以,它非常依赖于网络的发展。
互联网泡沫时代所引导的客户经济,开始体现出了真正的经济效益,各种增值业务如网上银行、电信运营商的短信增值业务,也在这个时期开始蓬勃发展,并产生出了巨大的经济效益,接踵而至的就是各种各样的网络应用流量瓶颈问题开始凸显,网络游戏最为典型。在中国,南北互通问题导致不少企业的网络流量瓶颈问题更显突出,证券交易的“堵单”现象、企业电子商务的网络应用、视频网站流媒体形成的巨大访问量,需要提供更高的网络流量处理能力,这种种问题,并不是单纯升级传统的路由、交换设备而能解决的,对于四层负载均衡交换机的压力也会更大。
以应用为导向的方案越来越明显了,综合多种技术手段的需求越来越强,“应用交付、Advanced ADC”概念,这是网络负载均衡概念的扩充。我们可以这样形象地理解:基于网络二层、三层的是路由交换,而基于网络七层的则是“应用交换”,应用交付是完全基于网络应用的系统解决方案,它将关键应用与基础网络设备关联起来。
浅论动态反馈负载均衡算法 篇3
负载均衡是一个服务器集群, 它是由多台服务器以对称的方式组成的, 每台服务器都有等价的地位, 不需要其他服务器的辅助, 因为它们都可以单独的对外提供服务。均衡负载能够平均分配客户请求到服务器集群, 以此提供快速获取重要数据, 解决大量并发访问服务问题。
目前负载均衡的分类可以从以下几面来分:
首先, 根据调节策略的不同, 可以分为静态负载均衡和动态负载均衡两类:
(1) 静态负载均衡。静态负载均衡预先根据已知负载的情况分配网络负载, 这种策略的优点是不会产生额外的开销[1]。 (2) 动态负载均衡。系统根据网络中的负载情况动态的调度服务器提供服务, 但在动态调度时对任务的分配管理会造成额外的系统开销。
其次, 根据调节手段的不同, 可以分为以下两类:
(1) 软件方案。软件解决方案是将负载均衡软件直接安装到服务器上。网络管理员可以对服务器进行高度管理, 如分析CPU、内存等系统资源的使用情况。由于传输流不必经过额外的设备, 因此在理论上可以节省费用、提高性能。 (2) 硬件方案。通过提供额外的硬件来实现负载均衡, 如提供具有负载能力的路由器、交换机。
再次, 根据调节对象的不同, 可以分为以下四类:
(1) 服务器的负载均衡。通过监视所有的用户请求, 并在可用的服务器群之间进行智能化的负荷分配, 从而可以提供容错、冗余、优化和可扩展性能。 (2) 高速缓存服务器的负载均衡。提供优化的Internet访问和存储资源使用率, 同时, 也使整个服务器集群的性能得以最大程度的发挥。 (3) 防火墙的负载均衡。防火墙的负载均衡通过有效地管理多个防火墙和其他安全设备上的流量。监视客户的数量和每个防火墙上的负载, 并在各单元之间动态地平均分配流量, 同时还可兼顾呼入和呼出的流量。 (4) 链路的负载均衡。链路的负载均衡是一种基于内容的交通管理解决方案, 适用于具有多个链路的网络[2]。
2 动态反馈的负载均衡的现状
2.1 负载均衡产品的巨大应用领域
伴随着计算机进入以网络为中心的计算技术新时代, 电信系统、电子政务、电子商务、网络邮件、网络视频等各种基于网络的服务业得到了飞速发展。随着人们对于网络服务的需求不断增加, 企业关键服务的访问量也在迅速增长。网络服务的持续在线和更迅速响应时间的要求, 加强了企业对能提供7×24小时不间断、高质量网络服务的信息基础设施的需求, 网络应用优化设备将成为继网络连接设备、网络交互设备、网络完全设备之后的网络信息化建设的必备设备。
2.2 负载均衡产品的庞大市场需求
负载均衡集群系统一直被业界看好, 据IDC最新报告, 随着基础网络的完善和应用的增多, 亚太地区 (不包括日本) 的企业正在增加在内容管理软件上的支出, 负载均衡集群系统市场有望因此得到很大的增长幅度。IDC新近报告指出亚太地区 (不包括日本) 内容管理软件市场有望从2003年的1.0942亿美元增长至2008年的2.1938亿美元, 5年的复合年增长率达到14.9%。这主要是受到金融和政府部门推动, 前者试图降低成本, 提高客户服务水平, 后者的主要目标是降低成本, 提高效率, 以便为人们提供更好的服务。IDC预测中国内地流量市场5年复合年增长率达20.2%, 并认为需求将越来越多地来自竞争同益加剧的银行业, 此外还包括通过政府门户网站向公众提供及时更新的信息, 以及部署Web内容管理软件解决方案等。从2004年第四季度到2005年第一季度, 世界范团内的负载平衡设备出货量增长10%, 为1.1万部, 销售额增长5%, 达到1.75亿美元。2003年3季度F5的国内营业额为1300万美元, 估计其年营、世额为5000万美元左右, 按其60%的市场占有率计算, 2003年此类产品的国内市场容量为8000万美元, 即6.5亿人民币左右[3]。
3 动态反馈的负载均衡算法
动态调度策略主要有两种:集中式调度策略和分布式调度策略。通过把原来集中式调度由中心节点收集所有节点信息的工作, 改由各节点自适应的收集, 根据自身状态主动传给调度中心就可以实现。这样中心调度节点只需根据当前已有的各节点发来的负载信息来进行决策调度, 不必再去主动收集各节点机的信息, 降低了由于负载信息收集增加的额外通信开销, 减轻了调度节点负担。
集中式调度中不可能每次请求到来时查询各节点负载情况, 可以每隔一段时间进行一次负载信息的查询、计算。同样, 分布式反馈中也可以每隔一段时间由各节点根据自己的性能和负载状态计算出一个值, 返回给负载均衡器。负载均衡器根据一定算法给出每个节点的可用度权值w, 把新到达作业分配给可用度最高的节点。由于每次的负载状态信息的反馈都会有一个时间片段, 如果在这个时间内到达多个请求均简单地分配给一个节点, 则可能会造成这一节点的过载。因此还必须由负载均衡器根据一定算法评估当前服务节点的真实负载, 这就要考虑服务器节点各项性能参数, 包括静态参数 (如:CPU频率, 内存容量, 系统I/O速率, 网络带宽等) 和动态参数 (如:CPU占用率, 内存使用率, 系统I/0使用率及网络带宽占用率等) , 并且要考虑某时段内各种动态参数的改变情况, 综合分析, 给出一个合理、简便的算法, 确定各服务节点权值, 达到负载均衡的目的。
3.1 动态反馈机制
集群系统运行一段时间之后, 各服务节点的实际负载状况会与调度器上记录的负载量产生一定的偏移。因此, 需要通过周期性的负载信息查询来修正调度器上的记录。这种“查询—修正。任务分配—查询”称为动态反馈机制。由于动态反馈机制需要额外的系统开销, 所以对于每一个新来到的服务请求来说, 我们不可能部去进行一次负载信息查询, 而只能在每个r时间间隔作一次节点负载信息查询。每次负载信息查询得到的是每个服务节点上的各项信息, 例如CUP占用率L (Ci) 、磁盘I/O占用率L (Di) 、内存占用率L (Mi) 、网络带宽占用率L (Ni) 、进程数量占用率L (Pi) [4]。
3.2 服务节点处理能力计算
我们在进行负载均衡计算时, 如果服务节点是异构的, 则不仅要考虑节点的负载量, 而且也必须要考虑到节点的处理能力。这样做的好处是能让处理能力高的节点承担更多的任务。对于节点Si的处理能力C (Si) , 主要从这几个指标考虑:CPU数量m、CPU类型、内存容量C (Mi) 、磁盘I/0速率C (Di) 、网络吞吐量C (Ni) 、最大进程数量C (Pi) 。
总之随着信息技术的发展, 特别是Web技术的发展, 对网络上的服务器提出了越来越高的要求, 越来越多的瓶颈会出现在服务器端。集群技术是实现高性能服务的一种有效途径。服务器集群负载均衡应用成倍提高了服务器应用的可用性、可伸缩性和可靠性, 扩展了服务器带宽和吞吐量, 加强了网络数据的处理能力, 提高了网络的灵活性和可用性。
摘要:随着我国Internet的迅速发展, 几乎户户有主机, 人们对服务器的性能要求也越来越高, 目前很多系统状态都是采用动态反馈负载均衡算法。在此旨是浅谈动态反馈负载均衡算法的应用。
关键词:负载均衡,动态反馈,算法
参考文献
[1]李拮, 金春慧, 何荣希.一种实现负载均衡的波长选路算法[J].东北大学学报, 2005, 26 (2) :118-121.
[2]王友良, 叶柏龙.分布式系统中动态负载平衡的研究[J].科学技术与工程, 2005:572-575.
[3]付国为, 刘心松, 冯玮.基于负反馈的网络负载调度算法[J].成都信息工程学院学报, 2006, 21 (6) :779-782.
负载均衡技术实现方法分析 篇4
关键词:负载均衡 链路聚合 均衡策略
TP393.09
Internet的规模每一百天就会增长一倍,客户都希望能够获得不间断可用性及较快的系统反应时间,但是随着网络的业务量的提高、信息量的加重,单一设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费。于是,负载均衡机制应运而生。
负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
根据OSI参考模型,一个网络可以分为七个层面。我们从不同的层面着手,解决负载均衡的方法也就各异。在一般情况下,普遍都是通过传输链路聚合技术、借助更高层网络交换技术和设置服务器集群策略等几个角度来实现。
1.数据链路层均衡技术
传输链路的备份是提高网络系统可用性的重要方法。目前的技术中,以生成树协议(STP)和链路聚合(Link Aggregation)技术应用最为广泛。
1)生成树技术
生成树协议(Spanning Tree)提供了链路间的冗余方案,允许交换机间存在多条链路作为主链路的备份。网络创建时,网络的所有节点间可以存在多条路径,生成树算法计算出最佳路径,在网络中定义了一个树,并且强制其他的路径处于备用状态。
当发现生成树中一部分网络不可达,或发生了某种变化时,生成树算法就会重新计算生成树拓扑,并且通过启动备份路径来重新建立连接。生成树技术要防止局域网中产生环路,因为环路会使网络发生故障。原始生成树协议 IEEE 802.1D通常在50秒内就可以恢复一个链接故障[融合时间=(2xForward_Delay)+Max_Age]。当设计此协议时,这种停机还是可接受的,但是当前的关键任务应用(如语音和视频)却要求更快速的网络融合。为此,IEEE委员会开发了新标准,在IEEE 802.1w中定义的快速生成树协议(RSTP)以减少停机的时间。
2)链路聚合技术
链路聚合技术亦称主干技术(Trunking)或捆绑技术(Bonding),其实质是将两台设备间的数条物理链路“组合”成逻辑上的一条数据通路,称为一条聚合链路,链路聚合成员彼此互为冗余和动态备份。实现的目标是提高链路可用性、线性增加带宽、分担负载、实现自动配置、快速收敛、保证传输质量、对上层用户透明、向下兼容等等。交换机之间多条物理链路组成一条聚合链路。该链路在逻辑上是一个整体,内部的组成和传输数据的细节对上层服务是透明的。
2.高层负载均衡技术技术
高层负载均衡技术通常操作于网络的第四层或第七层。第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,對每次TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的。第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用。
1)DNS负载均衡
DNS负载均衡技术是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。
在win2000 server下实现DNS负载均衡的过程是:
在DNS服务配置控制台中打开相应DNS 服务器的“属性”,在“高级”选项卡的“服务器选项”中,选中“启用循环”复选框。
打开正向搜索区域的相应区域(如test.com),新建主机添加主机 (A) 资源记录,记录如下:
www IN A 192.1.1.1
www IN A 192.1.1.2
www IN A 192.1.1.3
可以看到的区别是在NT下一个主机名“www”对应多个IP地址记录。
2)NAT负载均衡
NAT(网络地址转换Network Address Translation)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。
NAT负载均衡将一个外部IP地址映射为多个内部IP地址,对每次连接请求动态地转换为一个内部服务器的地址,将外部连接请求引到转换得到地址的那个服务器上,从而达到负载均衡的目的。
3)反向代理负载均衡
普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。
参考书目:
1.华为3COM技术有限公司,华为3COM网络学院教材,2004年12月,P255-259,P273-280
2.丁宇,中文Windows server 2003网络管理与网站构建,冶金工业出版社,2005年2月,P150-210
动态负载均衡 篇5
关键词:异构服务器,负载均衡,服务器处理能力权重,概率选择向量,系统调度
1 概述
在网络迅速发展的过程中,每年网络的用户不断递增,造成一些网络业务的要求也随之提高,数据库日访问量的不断递增,给服务器的处理能力要求也带来了同步的增长需求。在这样的情况下,如果按照传统的硬件升级方法是不能满足不断增长的需求的,而且面对业务量的不断提升,硬件的升级会造成资源的浪费和高额的成本投入。因此需要用软件的方法来均衡网络的信息流量,这就是目前比较流行的负载均衡方法。
负载均衡[1](Outbound Load Balancing)是通过人为的方法来简单有效的扩大服务群体,增加服务器吞吐量和数据处理能力,或者通过扩展设备来达到满足数据量不断增长的需求,它的实现简单,是建立在现有的网络之上,效果比较明显。负载均衡的含义有两个方面[2]:首先是集群(clustering)技术,它是将到来的处理比较复杂耗时的负载分散到多台处理器上进行处理,然后汇总各处理器的处理结果,对外来说整个系统的处理能力都得到了一个质的提升。第二层含义就是;为了加快服务器对用户的响应速度,减少用户等待时间,把到来的访问请求按照一定的算法分配到不同的节点上来处理,用以提高处理响应速度的目的,这主要针对一些用户响应类的应用服务器。
2 负载均衡算法
负载均衡算法是负载技术的调度算法,通过负载均衡算法将客户端的请求分配给不同的服务器以达到网络信息均衡的目的。
由于动态负载均衡算法相对于静态负载均衡算法具有较大的优越性,因此在此系统设计中常使用动态负载均衡算法来对网络服务器进行负载均衡,目前已提出了很多动态算法[3,4]如:Pick-K算法,Basic LI和Aggressive LI算法,Pick-KX[7]算法等。
Pick-KX算法是在Pick-K算法基础上加入了更多的受控随机性,是Pick-K算法的派生算法,该算法的原理是:在动态更新的周期中,当有请求到来时,从S1,S2,…,Sn中随机选出K个服务器设为W1,W2,…,Wk。并设它们的负载分别为L1,L2,…,Lk,则通过计算将当前请求以概率Pj分配给服务器Wj,其中:
对于Pick-KX算法,当K=N时,也就是在所有服务器中随机选取时,相当于按照固定的概率将到达的任务分配给相应的服务器。从选择概率公式可知,当N很大时Pick-KX算法相当于在负载较轻的服务器中进行选择,每当有任务到达时,比较其负载大小后再分配请求的行为是多余的,因为它等价于在更新周期内,按各台服务器的负载大小情况分配到达的任务。
另外Pick-K算法和Pick-KX算法都是只考虑了服务器的负载大小状况,而没有考虑服务器的性能不同,其处理能力也不同,因此我们在原有的算法基础上加入了概率向量和服务器权重,算法依据概率向量进行任务的分配,并考虑了服务器的处理能力,用服务器的权重来平衡服务器负载大小的权值,权重大的服务器处理能力高,权重小的服务器处理能力低,即当前负载值=原负载值/服务器权重系数。
3 改进后的算法及仿真环境搭建
常用的负载均衡算法适用于服务器同构情况下的网络负载均衡,对于异构系统来说其使用性能在实际应用中并不是很好,因此为了提高异构系统服务器的性能,对常用的算法进行改进使之适应在异构情况下的应用,提高服务器系统数据负载性能。
3.1 改进后的负载均衡算法
基于以上内容,文中提出了改进后的负载机均衡算法Pick-KW算法。
Pick-KW算法的原理是:T为更新周期,R为期望到达的任务数,在更新周期T内,设服务器S1,S2,…,Sn相对应的负载状态满足l1
这里R为预期到达任务数,Li为计算后的负载值,li为负载值,Wi为服务器处理能力权值。
对于改进后的算法,从理论上分析应能满足在系统调度方面达到资源耗费最小,不同性能的异构服务器最大可能的保持负载平衡,并且使客户请求尽量在最短时间内得到回复。对于改进后的算法可以利用仿真软件进行算法之间的对比来确认改进后的算法的有效性。
3.2 OPNET负载均衡算法仿真环境搭建
优化网络工程工具[5](optimized network engineering tool,OPNET)是目前最常用的商用网络仿真软件之一。该软件对于进行通信网络和分发系统的模拟与仿真实验有良好的效果,它可通过离散事件的仿真,分析模型或者算法来优化系统行为和性能,帮助客户进行网络结构的设计,网络性能的分析,网络模型的构建和网络行为的管理。它涉及到网络仿真的各个阶段,如模型设计、仿真、数据搜集以及数据分析。
首先构建仿真网络拓扑图,web集群负载均衡有集中式与分布式之分,该文采用集中式建模构建网络拓扑图[7,9],如图1所示。
在仿真实验程序的整个调度流程中,把数据包重新修改地址分配给后台服务器有一定的策略算法,这些算法用来保证请求数据包均衡分配给后台服务器,其中我们的仿真实验中就加入了两种分配算法,也就是常说的负载均衡算法,通过对比pick-kx算法和pick-kw算法,来显示修改算法的实用效果。
负载调度的整体工作流程[5]图如图2所示。
4 实验与分析
针对以上搭建的仿真环境,本试验选择仿真中的三台服务器的负荷作为仿真统计量,同时利用OPNET Modeler特有组件对仿真结果可以比较的特点,将三台服务器的仿真数据的仿真结果进行了统一比较。因在构建网络拓扑时配置的服务器处理能力不同,因此很方便看到算法比较的结果。
在进行仿真网络搭建时搭建如图1网络系统,该系统通过调度器转发用户请求应答数据,该系统由3台后台服务器,网络带宽为100MB/s,服务节点带宽10MB/s。服务器设备具体配置见表1。在测试中初始取w={0.3,0.3,0.4}运行仿真器,统一设置仿真时间为10h。
图3为Pick-KX算法的仿真结果。可以看到仿真算法Pick-KX的结果是不同性能服务器的负载结果的服务器吞吐量几乎没有因服务器配置不同而有所差别,这一结果也与Pick-KX算法的缺点相吻合,Pick-KX算法仅考虑当前各后台服务器的负载,而没有考虑服务器的处理能力,因此导致异构的服务器负载不是随其处理能力大小而有所均衡,便出现了图4所示在网络仿真10h里数据包处理能力的仿真结果。
图4为本文提出的Pick-KW算法仿真结果。可以看到在异构服务器随其处理能力大小在服务器负载均衡上有很好的效果,由于server3设备配置相比其他两台服务器性能几乎翻倍,所以其吞吐量和处理性能在相比server1、server2时,在长时间处理下性能也成倍增长;而server1和server2由于其处理性能比较接近因此仿真性能也基本相近。
文中算法Pick-KW是根据当前负载比例,计算服务器性能给出服务器权值,以合理分配用户请求,相比于Pick-KX算法有很好的实验结果,可以整体提高系统性能,增加系统吞吐量。
对于服务器性能相同的情况下,两者都可以实现很好的负载均衡效果,当考虑到服务器处理能力的差异时无疑本文算法可以得到很好的结果,不至于导致某些服务器负载过载的情况发生。
通过表2,我们可以很清楚地看到此算法的优越性。
参考文献
[1]黄欣,杨帆.网络负载平衡技术应用[J].辽阳石油化工高等专科学校学报,2002(4).
[2]郭成城,晏蒲柳.一种异构Web服务器集群动态负载均衡算法[J].计算机学报,2005,28(2):179-184.
[3]陈志刚,许伟,曾志文.一种基于预测的动态负载均衡模型及算法研究[J].计算机工程,2004(23).
[4]王霜,修保新,肖卫东.Web服务器集群的负载均衡算法研究[J].计算机工程,2004(25).
[5]王文博,张金文.OPNET Modeler与网络仿真[M].北京:人民邮电出版社,2003:68-138.
[6]廖艳达.基于OPNET的Web集群负载均衡仿真研究[D].桂林:广西师范大学,2007:25-28.
[7]Takenaka T,Kato S.Adaptive load balancing content address hashing routing for reverse proxy servers,Communications[C].2004 IEEEInternational Conference on,2004:1522-1526.
[8]Zheng Shiyuan,Liu Jun.A global strategy for controlling document distribution in confidential document management system[C].Com munication Software and Networks(ICCSN),2011 IEEE 3rd International Conference on,2011:410-415.
[9]赵成贵.互联网络负载平衡理论与算法[M].北京:科学出版社,2002:12-15.
动态负载均衡 篇6
关键词:负载均衡,服务器集群,调度算法
1引言
随着因特网技术的飞速发展,因特网已经成为越来越多的人们学习、工作以及生活的必备工具之一[1]。但是,随着因特网用户数的不断增加,各大网络公司的具体服务器系统变得越来越不堪重负。 通过使用集群技术来改装原有的具体服务器系统, 成为一种能够快速的应付这种局面并有效解决这个问题的好方法。集群系统一般都要靠前端的负载均衡调度器将用户的连接请求转发到后台的具体服务器之上。转发过程必须有负载均衡算法的配合,才能使得用户连接请求在各台具体服务器之间得到合理、均匀的分配[2]。
本文在深入的研究LVS集群系统及其主要实现的四种负载均衡算法的基础上,提出了一种改进的调度算法,该算法的最大特点是能够定时收集后台各台具体服务器的性能指标和实时负载指标。性能指标包括了CPU处理速率、内存大小、磁盘读写速率和网络带宽等。负载指标是连接数与最大负载值的比值。根据这些指标,负载均衡调度算法计算出了具体服务器的综合性能参数,通过负载指标也相应的计算出具体服务器的综合负载参数,最后通过这两个参数和本文设计出来的另一个公式转换得到了各台具体服务器的权重值。因此,通过这种方法负载均衡调度器就可以在集群系统的运行过程中,获得代表具体服务器的性能水平和实时负载状况的权重值,使得其可以更加合理的在具体服务器间分配用户的连接请求。
2传统的负载均衡调度算法
2. 1轮叫算法
轮叫调度( Round Robin Scheduling) 算法就是以轮叫的方式依次将请求调度不同的服务器,即每次调度执行i = ( i + 1) mod n ,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度[3]。轮叫调度算法假设所有服务器处理性能均相同,不管服务器的当前连接数和响应速度。该算法相对简单,不适用于服务器组中处理性能不一的情况,而且当请求服务时间变化比较大时,轮叫调度算法容易导致服务器间的负载不平衡。
2. 2加权轮叫算法
加权轮叫调度算法是轮叫算法的改进,该算法考虑到了集群系统中各服务器节点的性能差异,给每一台服务器分配一个性能权值,但是该算法没有考虑到实际运行中Linux虚拟服务器集群系统的实际负载情况[4]。比如由于各个不同的用户连接所要求的任务的运行时间各不相同,导致运行一段时间后的集群系统后台的各台具体服务器的实际运行的性能状况已与初始状态有明显的不同。所以,该算法还是不能最合理的实现LVS集群系统的负载均衡。
2. 3最小连接算法
最小连接调度( Least - Connection Scheduling) 算法是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况[5]。调度器需要记录各个服务器已建立连接的数目,当一个请求被调度到某台服务器,其连接数加1; 当连接中止或超时,其连接数减1。最小连接算法考虑到了后台各服务器节点的实时负载情况,但是各服务器性能差异没有考虑到,若集群中各服务器节点性能差异很大,那么最小连接算法会很容易造成负载调度的不平衡。
2. 4加权最小连接算法
加权最小连接算法考虑到集群系统中后台具体服务器的实时负载水平的不同以及具体服务器性能水平的不同这两个重要的因素,但是仅仅以连接数来代表对应的具体服务器的负载程度、并以一个权重值来代表具体服务器的性能水平,明显是将问题过于简单化了[6]。在系统实际运行过程中,服务器的负载指标和性能指标可能会更复杂,所以加权最小连接算法还是不能很好的实现具体服务器间的负载平衡。
3改进的负载均衡调度算法
3. 1改进算法设计思路
本文提出的算法旨在改变负载均衡调度器的调度依据,在原有的加权最小连接算法的基础上进行改进,每一次调度时,负载均衡调度器都需要知道集群中各个服务器的性能状态和负载状态,并根据这两种状态计算出综合指标参数,判断分配哪一台服务器提供服务。首先,调度器向集群发送状态查询命令,请求各服务器节点反馈自身的性能状态和负载状态。服务器性能指标包括: CPU处理速率、内存大小、磁盘读写速率、网络带宽。服务器负载指标包括: 当前负载值和最大负载值。根据性能指标与负载指标的比值,计算得到服务器综合指标值,这个比值就作为负载均衡器的调度依据。
3. 2性能指标参数和负载指标参数
3. 2. 1综合性能指标计算
假定集群中存在n台服务器,这n台服务器可以用集合表示为S{ S1,S2,…,Sn} 。具体的计算思路如下: ( 1) 读取服务器发送过来的性能指标; ( 2) 对各台服务器中的各个性能指标进行统计,以得出各个性能指标中数值最大值; ( 3) 将每个服务器的指标值与这些对应的最大值相比较得出指标的比例值。经过这3步,就得到了可以用在同一个公式中的比例指标值。最后通过加权公式计算出综合性能参数。
定义1: CPU处理速率比值CPi
其中Ci是第i台服务器的CPU处理速率,max( C1, C2,…,Cn) 是集群中服务器CPU处理速率最大值。
定义2: 内存比值MPi
其中Mi是第i台服务器的内存大小,max( M1,M2, …,Mn) 是集群中服务器内存最大值。
定义3: 磁盘读写速率比值DPi
其中Di是第i台服务器的磁盘读写速率,max( D1, D2,…,Dn) 是集群中服务器磁盘读写速率最大值。
定义4网络带宽比值NPi
其中Ni是第i台服务器的网络带宽,max( N1,N2, …,Nn) 是集群中服务器网络带宽最大值。
这些比值的取值在0到1之间,每一种比例值的大小都反映了该服务器的性能优劣程度,需将这些指标结合起来考虑服务器的综合性能,我们给它们分配权重值,利用计算公式可算出某台服务器的综合性能指标。分别给上面四个比例设定一个加权系数Wc、Wm、Wd、Wn,各个加权系统取值在0到1之间,取值大小体现了指标在集群服务器中的重要程度,通过下面公式( 5) ,可得到第i台服务器的综合性能参数GP( Si) 。
定义5服务器综合性能参数GP( Si)
3. 2. 2综合负载指标计算
假定在某一时刻,集群中第i台服务器的实时用户连接数为Li,该服务器的最大负载为MLi,它们的比值即为t时刻该服务器的负载参数LP( Si) ,公式( 6) :
3. 3服务器综合指标参数
根据上文得到的综合性能指标和综合负载指标,可以计算得到第i台服务器的综合指标参数F( Si) :
根据上述公式( 7) ,负载均衡调度器计算出集群中每台服务器的综合指标参数后,选择指标参数值最大的服务器分配用户请求,因为指标参数F( Si) 越大,意味着综合性能指标GP( Si) 越大或者综合负载指标LP( Si) 越小,这台服务器一定是最合理的分配选择,这就是本文改进算法的主要依据和核心思想。
3. 4算法的具体实现
根据上面所述的算法思想,可以在负载均衡调度器上运行此算法,调度器每次都将用户请求分配给综合指标参数F( Si) 最大的服务器节点。算法伪代码如下:
最后,F( Si)max就是性能最优的服务器,调度器会把连接请求分配给该服务器。
4实验结果分析
为了检验本文提出的改进调度算法的性能,根据现有的条件,搭建了一个提供Web服务的集群系统,集群系统包括一台负载均衡器、后端三台真实服务器和一台共享DB服务器,在负载均衡调度器上分别运行加权最小连接算法和本文提出的改进算法进行比较测试,测试请求时用户请求登录操作,测试工具使用的是WAS服务器测试工具。根据WAS反馈的数据,分析了请求的平均响应时间和请求成功次次数数,测测试试结结果果如如图图1、图图2所所示示。
很明显,改进的调度算法相比加权最小连接算法,在请求响应时间和吞吐率上,都表现出更好的性能,并且在测试过程中,还发现,加权最小连接算法往往会出现服务器过载的问题,而改进算法保持集群中服务器实时负载状况良好,不会出现过载的情况。可见,与加权最小连接算法相比,改进的调度算法能够有效地减少集群总体连接的平均响应时间, 并实现集群良好的负载均衡效果。
5结束语
动态负载均衡 篇7
软件定义网络SDN[1]作为一种新型的网络架构,其将网络的控制平面与数据平面相分离,实现了网络的集中化控制及可编程性,便于网络管理的实现[2]。Openflow[3]实现SDN控制器和底层网络基础设施之间的通信。由于Openflow采用集中控制的模式,所以到达交换机的每个流请求的第一个数据包都被送往控制器进行处理,控制器根据全网的网络视图进行路由的计算、流表的下发以及流表的安装。其余的数据包则通过查询流表来获得相应的转发规则,若有匹配项则按相应的操作进行转发,若无相关匹配项交换机则向控制器发送“packet-in”消息,由控制器解析得到相应的规则进行处理[4]。然而,随着Openflow交换机数量的增多,大量的流请求从数据平面转发到控制平面进行处理,增加了网络负载,并使控制平面的负载超出了正常的范围,从而使控制平面成为了系统的瓶颈。传统SDN主要通过集中式的单一控制器实现[5],然而单一控制器的处理能力有限,难以实现控制平面的可扩展性及可用性。因此,一些研究机构提出了一种逻辑上集中、物理上分布的多控制器控制平面,如Onix[6]、Kandoo[7]、Hyperflow[8]等。多控制器控制平面的主要思路是通过控制器将网络划分为不同的区域,各区域内部署一个或多个控制器,这些控制器通过全局的网络视图对网络进行管理[9]。然而,多控制器方法又引入了一个新的问题,即到达集群的流量是动态变化的,控制器和交换机之间的静态配置会导致控制器间负载的不均衡,并最终导致网络性能的下降。
为了解决上述问题,我们拟采用交换机迁移策略,提出一种动态负载平衡方法,以提高控制平面的扩展性和可靠性。其具体实现方式为根据控制器的实时负载状态以及节点的处理能力,动态地将过载控制器的部分负载转移给其他空闲的控制器处理,尽可能地使每个控制器发挥其最大性能,以提高分布式控制器集群的总体响应时间及系统吞吐量。
本文将讨论一种基于实时负载的动态自适应负载均衡算法,介绍该算法使用的负载因素、状态的判断以及自适应地选择目标控制器的方法,并通过实验验证该算法可以动态合理地分配负载,达到更好的负载平衡效果。
1相关工作
SDN控制平面的性能提高主要通过以下3种方法实现:(1)最大化地利用每个控制器的性能。例如Beacon[10]、Maestro[11]通过多线程的方式提高了控制面的性能;(2)将部分控制平面的工作转移到转发面来执行,以减轻控制器的负担,如Devoflow[12]将一些控制决策赋予openflow交换机,使得满足条件的数据流不再通过控制器而直接转发;(3)用若干控制器节点组成的集群来实现分布式控制平面,如Onix,Kandoo利用该方法使得控制平面易于扩展并具有较高的可靠性。
在分布式控制器的近期研究中提出了“SDN弹性控制器”的概念。Dixit等人[13]提出的“Elasti Con”支持控制器的弹性行为,即根据控制平面的负载,相应地增加或减少控制器的数量。同时为了实现负载的转移,基于openflow 1.3角色请求的信息,Dixit等提出了交换机迁移协议。但对于控制器的负载状态的评估以及目标控制器的选择并无具体描述。Bari等人[14]也提出了一种弹性方法,其可在不同的网络状态下动态改变控制器的数量及其位置。但是该方法没有说明迁移需要考虑的因素。Yazici等人[15]提出了一种动态添加或移除控制器的算法,同时提出了一种控制器和交换机映射模型的符号描述。但是这种模型不是基于openflow角色机制,而是基于IP别名的,一旦发生控制器故障转移将使物理网络的路由配置更加复杂。
为了解决上述问题,本文提出一种新型的分布式决策方法。该方法实现了控制器负载的动态量化、监测、精准迁移决策及目标控制器的选择算法。其中交换机的选择基于往返时间,而目标控制器的选择则基于迁移前后系统的整体负载。本算法不仅可以根据系统整体的负载同时做出迁移交换机和目标控制器的最优选择,而且可以动态调整迁移后交换机和控制器的权重,以便于后续迁移。与典型的交换机迁移策略相比,本方法使得SDN分布式控制平面具有更好的可扩展性以及可用性,且大大减少了决策时延。
2动态自适应负载均衡策略
在本节中,我们提出了交换机迁移的具体实现。包括控制器负载的定义和评估,迁移交换机和目标控制器的选择以及负载平衡的实现。
2.1负载的定义与计算
在SDN中,一台控制器可以控制多台交换机,每台交换机产生的流请求都将通过控制器来处理,控制器将处理结果返回给该交换机以及转发路径上的其他交换机。在实际部署时,SDN控制器采用大型的服务器或单独的一台高性能计算机来实现。因此我们计算控制器的负载需要考虑两个主要的负载来源:交换机输入度量和服务器度量。交换机输入度量包括连接到控制器的交换机数量N,来自所有活跃交换机的平均“packetin”消息到达速率R;服务器度量包括当前CPU利用率Ucpu,当前内存利用率Umem,网络带宽占用率Unet。
交换机输入负载计算公式如式(1):
服务器负载计算公式如式(2):
整合的控制器的负载如式(3):
其中i=0,1,…,n-1,K1+K2+K3+k4+K5=1,n代表本地集群中控制器的数量,Ci代表每一个控制器。
控制器本身的处理能力C(Ci)主要从控制器连接的交换机数量C(Ni)、控制器的缓存队列大小C(Qi)以及CPU的性能C(Di)、内存容量C(Mi)、网络吞吐量C(Ti)等指标来考虑,使用式(4)计算:
控制器节点的负载权值W(Ci)定义为节点的负载与该节点处理能力的比值,采用式(5)计算:
控制器节点的负载越大,说明该节点的负载越重,从而可以根据负载权值的大小来调整负载的分配。
2.2控制器负载状态判定
初始由系统管理者设定收集和计算负载信息的时间间隔T,设在T时间内,控制器接收的流请求数为P,控制器处理的流请求数为Q,为了减少频繁收集负载信息,我们设定了控制器的阈值CT,根据如下的函数,控制器的状态可以分为三类:
其中0表示空闲状态,即当控制器的负载权重小于阈值且平均流请求速率小于流处理速率时,控制器处于空闲状态或者低负载状态;1表示过载状态,当控制器的负载权重大于阈值且平均流请求速率大于流处理速率时,控制器处于过载状态;2表示正常状态,即控制器发挥了最大的处理能力。当控制器处于过载状态,交换机迁移操作就被触发。
2.3交换机迁移选择
选择不同的交换机进行迁移对负载均衡有很大的影响。选择流请求速率低的交换机进行迁移可以减少处理时延,但需要频繁迁移;选择流请求速率高的交换机进行迁移可能引起新的主控制器负载过重且代价过大。所以我们基于交换机的往返时间来决定交换机的选择。在集群中,每个交换机都会分配一个初始权重W(Si),代表交换机被选择的优先权。交换机的权重是受交换机和主控制器之间的往返时间RTT的影响而动态变化的,采用式(6)计算:
其中,RTTi表示交换机迁移之前的往返时间,RTT'i表示交换机迁移之后的往返时间,R为可调节的系数。权重越大说明交换机具有高的优先级,在下一次交换机迁移时优先被选择。
2.4控制器的选择策略
首先我们定义系统整体负载平衡指标:
其中,ri代表单一控制器节点负载率,r0表示具有n个控制器节点的系统的整体负载率。真正意义上的负载均衡是各个控制器根据自己的处理能力分担系统总负载的一部分,达到平衡系统负载的目的。因此,可通过对V值的计算来评估系统负载状况。V值越大表示系统整体负载平衡越差,相反,V值越小表示系统整体负载平衡越好。
数据流迁移到其他控制器后将给系统负载平衡造成一定的影响,其评价可通过计算系统负载平衡指标,即来预测迁移对系统负载平衡的影响。只有交换机迁移到一个控制器节点时,才能使该表达式的值最小。这样,我们可以通过式(8)的最小值来确定迁移的目标节点。
其中MQ表示需要迁移的数据流数目,WCi=1表示控制器Ci接收迁移对象,WCi=0表示控制器Ci不接收迁移的数据流。S为所有处于空闲状态的控制器组成的集合。
2.5动态自调节负载均衡算法描述
算法的基本思路为:首先,控制器周期性地检查自己的负载状态,若为空闲或正常状态,则系统负载均衡,不需要运行负载算法;否则,控制器处于过载状态,则会触发交换机迁移操作。其次,处于过载状态的控制器根据式(6)来选择自己区域内一台交换机,进行迁移。选定迁移对象之后,控制器会向其他处于空闲状态的控制器发送消息,来获得它们的负载信息,然后根据式(8)选择一台合适的控制器作为接收对象,进而完成迁移操作。最后,检查系统是否负载平衡,若否,则继续执行迁移算法,若系统已平衡,则更新每个交换机和控制器的权重。算法的具体流程如下所示。
算法1动态自调节负载均衡算法
输入:控制器负载信息列表L={L1,L2,…,Ln}
所有交换机权重信息列表S={W(S1),W(S2),…,W(Sn)}
负载判定阈值CT,负载检测时钟周期T
流请求速率P,流处理速率Q
输出:负载迁移结果M
步骤:
3实验及结果分析
本节主要通过仿真实验对第三章中实现的负载均衡系统进行性能评估,比较该系统的动态负载均衡算法与现有交换机与控制器之间静态的配置算法在性能上的差异,包括集群平均吞吐量的比较和平均响应时延的比较。主要目的是为了验证本文提出的负载均衡算法在多控制器集群上提升性能的能力。
3.1测试环境配置
本研究采用Mininet作为实验平台。基于Floodlight实现分布式的SDN多控制器集群。为了测试控制器的性能,我们采用Cbench测试软件。Cbench是一款Open Flow控制器性能测试工具,其可模拟交换机发送packet-in消息。实验架构环境如图1所示。
本实验中搭建了4个openflow物理控制器节点:控制器A、B、C、D以及12个openflow交换机。每台控制器均连接不同数量的交换机,以说明交换机个数对实时负载的影响。每个交换机都有一台主机相连,用于向网络中的其他主机发送UDP流量包。与实际网络相同,测试数据包首先通过一个交换机进行转发,进而被发送到控制器进行处理。每个交换机除了连接一个master控制器,还连接其余控制器作为slave控制器。如交换机S1、S2、S3、S4与控制器A、B、C、D相连,其中A为其master控制器,B、C、D为其slave控制器。更加具体的实验环境配置如表1所示,通过测试,单个控制器每秒能处理19 607个数据包。设定系统负载阈值为85%,服务器单项性能参数的最大阈值为95%,负载反馈的时钟周期T为10秒,循环测试16次,取参数k=(0.1,0.7,0.1,0.1,0),设定网络中每个交换机每秒产生2000个packet-in消息,运行30秒后改变交换机发送速率为每秒5000个数据包。
3.2系统吞吐量的比较
吞吐量指控制器每秒内能够处理事务的数量,它是衡量控制器负载均衡算法的一个重要评价指标。测试开始时我们设定交换机发送packet-in消息的速率为每秒2000个数据包,运行到30 s时,改变交换机发送消息速率为每秒5000个数据包。实验结果如图2所示。
由图2可见,静态映射模型的平均吞吐量在30s时急剧下降且维持在较低水平。这是因为数据请求量的增多导致了控制器负载的不均衡,在请求速率较大的情况下控制器A负载过重,其缓冲区溢出引起数据包丢失,从而造成平均吞吐量的下降。而动态均衡映射模型在30秒时出现平均吞吐量一过性的降低,之后恢复至接近正常水平。这是由于负载超过系统阈值时会触发交换机迁移操作,根据动态迁移算法控制器A会将一部分负载迁移给控制器C,从而提高了其吞吐量;而控制器C接收负载之后由于负载没有超过其处理能力,其吞吐量几乎没有变化。所以当控制器A与控制器C通过交换机动态迁移达到负载均衡时,系统平均吞吐量趋于稳定且接近正常水平。
3.3系统响应时延
响应时延指对于每个openflow会话,发送一个packet-in消息,计算这个消息的往返时延,SDN网络中通常采用反应式流安装规则,控制器的响应时间直接影响着流安装的处理速度。本文通过改变数据流的到达速率来测试两种算法的响应时间,其结果如图3所示。
从图3可以看出,在流请求速率较低时(小于5000),二者并无明显差距,系统响应时间均较低;而当流请求速率持续增大时(大于5000),动态迁移算法和静态映射算法下系统的响应时间均增加,但前者的增加速率及大小明显低于后者。这是由于在静态模型下,当数据产生速率超过处理器的处理能力时会造成控制器过载,进而显著延长响应时间。而动态模型中,当数据产生速率持续增大,负载超过所设定的阈值时,系统会动态迁移部分负载,使得其内部负载趋于均衡,从而延缓响应时间的增加。
3.4负载均衡的影响
本实验将通过计算时延的累积分布函数进一步测试迁移策略在系统过载时是否可以缩短响应时间。基于前期实验结果我们发现当系统请求速率大于5000时系统响应时间开始明显增加,故本实验中我们设定每个交换机每秒可以产生5000个packet-in消息。此时控制器A与控制器C之间的负载是不均衡的,在该配置下,控制器A与控制器C迁移前后的响应时间的概率分布如图4所示。
由图4可以看出,迁移前控制器A响应时间的概率分布较广且主要集中于5~15秒的范围内。而其他三条曲线的概率分布较为集中且绝大部分在5秒范围以内。这是由于当控制器A过载时其响应时间较长,而迁移一个交换机到控制器C后A的负载降低,响应时间明显缩短。图中控制器C的响应时间在迁移前后并无明显变化,这是由于其始终处于低负荷状态。因此,通过交换机的动态迁移能够充分利用控制器的处理能力,实现负载均衡能,提高系统的性能。
4结语
控制器之间负载的不平衡会导致网络性能的次优化。为了解决这个问题,本文提出了基于交换机迁移的一种动态可伸缩性负载均衡方法。该方法根据控制器的负载状态,通过迁移交换机的方法在多个控制器间实现负载均衡。我们通过3方面测试了分布式SDN控制器的性能,结果表明,与传统的静态映射方法相比,动态迁移算法可以提高控制器集群的资源利用率,提高控制平面的吞吐量并缩短响应时间。下一步工作,我们将会继续优化交换机迁移策略,改善负载调度算法,使其自调节设定的任何阈值或调节参数。
摘要:为了解决交换机与控制器之间的静态配置会造成控制器间负载的不均衡问题,综合考虑控制器的实时负载和其自身的处理能力,提出一种基于交换机迁移机制的动态自调节的负载均衡算法。该算法可根据系统整体的负载自动选择分配负载的控制器,保证性能高的控制器分配到较多的负载,从而解决多控制器间负载不均衡问题。实验表明,该算法能有效提高系统平均吞吐量及降低平均响应时延,达到更好的负载均衡效果。
动态负载均衡 篇8
1 面向智能配电基础的异构融合通信网络模型和业务类型
1.1 模型
本次研究针对的是复杂的老城区的配网改造工程以及受到环境影响而不方便进行光纤铺设的地区, 并对它们进行了异构网络模型的构建。异构网络的部署位置主要是在10k V变电站业务终端层和配电子站的接入网层。异构融合网络中包含了多种多样的无线接入网络, 比如:新一代的宽带无线通信网络, 其中以TD-LTE作为代表;无线专网, 以W i M ax/M c W i LL为代表;无线公网, 其中以G PR S/C D M A/3G作为代表, 这些都是多网络融合实现的例子。如果一个区域受到了异构网络的覆盖, 业务的终端就可以根据接入网络的实时性能指标来保证对服务质量的需求, 使用选择机制替其分配适当的网络资源, 进而可以很好地控制各个接入网络的负载相互均衡。在单一的网络环境下, 网络通信常常会出现负载过重的情况, 而多样化的接入网就可以有效地避免因为负载过重而产生的阻塞、延迟的现象。
1.2 业务类型与等级的划分
国家电网公司对配电网自动化系统制定了一系列的技术标准, 智能配电通信系统是信息传送的载体, 在建立与改造的时候需要充分地考虑自动化系统的需求, 并且把覆盖所有配电终端作为目的, 为终端信息的接入提供符合标准的通信网络。
1) 对智能配电终端的通信业务的分析。终端主要包含了D TU (用户配电所及公用的监控终端) 、TTU (配电变压器的监测终端) 、FTU (配电开关监测终端馈线终端) 等等, 是为了实现“三遥”配电自动化系统, 所谓的“三遥”是指同时具备遥控、遥信、遥测的功能。
2) 储能设备/微网接入/分布式电源的通信业务分析。目前, 微电网技术和分布式发电资源正在快速地发展, 城市配电网首端系统出现发电单元, 而且发电单元的发电能力获得不断提升。储能设备/微网系统/分布式电源接入配电网, 要求在储能设备/微网系统/分布式电源与配电主站之间设置通信通道, 而且要求在站内每个间隔处以及接入的储能设备/微网系统/分布式电源配备一部智能的电子设备, 通过电子设备间的通信来监控储能设备/微网系统/分布式电源的情况, 并对其进行控制、管理。
3) 居民用电的信息采集。通过集中器对用户电表信息的采集来获得相关的信息。智能家电的功率和用电状态等等的信息会上传至配电调度端, 给用户传输分时电价、智能家电控制、实时电费等信息, 每一个电表的信息量可以达到300字节/15m in。一台集中器可以接收大概500个用户的电表数据, 它所需要的带宽是5kbit/s。
4) 管理和负荷控制通信业务的要求。对于一些大负荷居民的特殊需求, 要求进行负荷需求侧管理, 比如负荷控制参数下发、电能质量检测、负荷预测等功能。
2 动态负载均衡的算法
改善网络的运行质量的有效途径之一就包括了负载均衡, 能够缓解或者解决网络信息系统中分布不平衡的问题, 进而可以提高系统的服务质量以及系统的容量, 提高无线资源利用率。
假设本文异构网络中包含了m个R A N (无线接入网络) , 第i个R A N可以提供的带宽资源是C i, 网络目前有L个N R T配电通信业务与K个R T业务需求, 并且假设第l个N R T业务需要占用B (1) 个有效的带宽, 第k个R T业务需要占用B (k) 有效的带宽。
第一, 剩余的有效的可用的带宽与网络总有效带宽的比值定义为:
第二, 对R T业务, 第一原则是要确保业务阻塞率在需求的范围内, 把R T业务的服务质量需求保证程度Q rt定义为:
式子中Prt (i) 表示的是对R T的阻塞率;lg Prt_tag表示的是对R T业务的阻塞率限制的要求。
因此, R A N i与R T的效用函数表示为U rt (i) , 定义为:
其中, U rt (i) 综合的考虑了R A N (i) 的两个因素影响, 分别是对R T的实时阻塞率和当前剩余有效带宽。阻塞率低, 其去对数后和目标阻塞率的比值高, 从而效用函数的数值大。
3 结论
设计的异构负载均衡算法, 在业务转移的阶段, 通过函数的引入, 衡量了各个候选网络对N R T与R T业务的服务质量, 在接入的控制阶段, 设计优化模型可以既保证服务质量, 又能实现网络通信之间的负载均衡, 从而保证网络通信系统的可靠性和安全性, 并且提高了通信系统的服务质量。
4 结束语
本文的分析表明动态均衡算法可以十分有效地减小通信过程中的阻塞率, 为智能配电通信系统提供一个经济可靠的高质量服务。
摘要:异构融合通信网络是新时代无线通信网络系统发展的主要方向, 智能配电通信网络能够满足工业化的服务质量需求。因此, 本文建立了异构网络模型并且结合智能配电系统的发展目标, 研究了各种类型的通信业务, 进而设计出一种新的算法, 给智能配电网络系统的建立和调度业务提供了参照。
关键词:智能配电,动态负载均衡,异构融合通信网络
参考文献
[1]唐良瑞, 盛洁, 祁兵, 黄宇峰.面向智能配电的异构融合通信网络动态负载均衡[J].中国机电工程学报, 2013.
动态负载均衡 篇9
摘 要:校园网有多个出口时,均衡使用各出口带宽是高校网络信息部门关注的问题,而由于网络的互联互通,高校在采用均衡线路方法的同时往往会降低用户上网体验。针对这种情况,作者提出多系统协同的网络负载均衡方法,通过分析校园网体系结构、用户群体分布以及网络流量构成,调整核心设备配置、规划策略路由实现目的地址选址和应用选址相结合的链路负载均衡,并设计基于用户行为的DNS资源调度算法引导HTTP流量,解决负载均衡下带来的网络抖动问题,通过具体高校校园网环境测试,实验结果表明,原流量低的出口线路得到了有效提升,整体线路得到均衡,并拥有良好的用户体验。
关键词:网络负载均衡;应用协议识别;用户行为分析;流量控制;DNS
中图分类号:TP393.1 文献标志码:A 文章编号:1673-8454(2016)04-0085-05
随着无线校园网的迅速普及,师生员工对网络的依赖性越来越高,对高速、稳定的网络需求越发迫切,为了解决校内外带宽瓶颈问题,高校也逐渐将校园网主干线路升级到万兆,并接入不同运营商的线路来实现网络出口的扩容。
在实际应用中,多网络出口高校的各条线路流量并不能达到预期中的效果,往往流量集中于一条线路,造成过载,而其余线路处于空闲状态,使用网络负载均衡设备虽然可以解决过载与空闲的问题[1-7],让线路看上去均衡,但很容易失去多出口线路带来的最大优势,发往归属于某运营商的数据包受负载均衡影响,需要从其他运营商的线路出去,经过绕行,才能到达目的地,用户的上网体验感会明显下降。
本文提出了一种基于多系统协同的网络负载均衡方法,在解决线路负载均衡的同时,保障网络质量不受影响。
一、问题描述与分析
多出口是高校普遍采用的网络策略,此策略具备优点的同时,集中性的问题也较多,在绝大多数高校校园网中比较普遍。现以某高校为例进行典型性分析。某高校目前校园网有电信(1G)、联通(100M+200M)、教育网(1G)、移动(1G)以及长城宽带(1G,只提供视频镜像服务)出口,总可用带宽为4.3G,校园网采用扁平化三层架构部署[8 -9],有线用户使用PPPOE拨号认证,无线用户使用802.1x准入认证和Portal准出认证。
这是一个典型且复杂的多出口网络,涵盖了大多数的高校出口模型。从网管系统中获取到各线路的负载情况,如表 1所示,优质带宽的快速消耗导致校园网不仅在晚高峰期近乎无法使用,白天工作时间也不断出现网页打开缓慢的问题。
显而易见,电信、联通线路已经满负载在运行,而其他线路,在不同的时间段,流量都较小且变化小,做出的贡献值也偏低。
为了缓解校园网目前所遇到的问题,高校会采用智能流控设备对流量进行控制,保障Web应用流量,限制单用户并发数和带宽,策略实施后,线路负载如表 2所示。
从数据上看,电信、联通线路负载得到了明显的降低,其他线路未见明显变化,虽然在一定程度改善了网络拥堵情况,在高峰期能保障网页的正常浏览,但仍有大量线路资源处于空闲状态。
对于校园网用户,体验网络的质量可以从两个角度分析:①上网、游戏、视频流畅不卡,即带宽有保障,链路稳定;②下载速度快,即能充分享受带宽,当这两个需求叠加在一起时,对带宽有限的校园网而言,形成矛盾关系。分析并总结各个运营商提供的线路以及目前状态,如表 3所示。
从表3中可见,大量的带宽并没有被有效利用起来,进一步检查校内权威DNS的配置信息,当前校内DNS配置为向教育网递归,这是高校一般的配置,而教育网返回的域名对应的地址以属于联通、电信居多,从而也得出降低拥塞线路需要解决DNS递归解析问题[11 -13]。
从流控设备中取得应用排名信息,如表 4所示,可以发现P2P流量在网络流量中占比最大,结合表 1数据,正是这部分流量消耗了优质线路的宝贵带宽,造成用户不仅上网不稳定,而且下载缓慢,互相争抢有限的优质带宽,恶性循环越发严重。
表 4也表明,稳妥的处理好P2P下载流量,才能恢复网络的畅通,是负载均衡实现的先要条件,基于以上分析,本文提出了基于多系统协同的负载均衡方法。
二、多系统协同的负载均衡方法
通过上述分析研究,并考虑到现有核心架构,通过三种途径共同作用来实现网络负载均衡,并解决负载均衡中遇到的网络抖动问题。
1.校园网核心重新部署
核心链路升级改造是为了给负载均衡的实现提供必要的硬件支撑。
改造后的核心拓扑如图 1所示,部署方案如下:
(1)部署2台万兆防火墙并作为出口路由设备,防火墙以主备模式部署,在最前端配置一台交换机,划分VLAN,将各出口线路一分为二,分别接到防火墙,解决网络出口稳定性问题。
(2)核心设备之间的链路由千兆捆绑升级到万兆互联,解决物理层次的瓶颈以及因捆绑而造成的设备部分功能受限问题。
2.系统协同配置方法
在负载均衡方法上,整体思路为实时应用采用目的地址路由,数据包不跨运营商线路;p2p下载、p2p影音采用应用协议路由,指定具体出口线路;DNS划分不同转发区,引导网络流量,并解决网络抖动问题。具体配置方法如下所述:
(1)在出口防火墙上面写入静态路由,根据IP目的地址选择合适的运营商线路;依据应用识别的结果,制定策略路由,将P2P下载、P2P影音的数据包按线路负载引流到教育网出口和移动出口。
策略路由配置命令如下:
FireWall_1(M)(config)# pbr-policy cernet
FireWall_1(M)(config-pbr)# match id 5
FireWall_1(M)(config-pbr-match)# nexthop 172.16.255.53 112.25.223.97
Building configuration..
配置命令生效后,查询配置结果如图 2高亮行所示。
(2)校内DNS服务器的递归请求默认通过移动线路发送到移动的DNS服务器进行解析;定义多个DNS转发区,教育网域名以通配符识别方式发送到教育网DNS解析;视频站点域名发送到长城宽带DNS服务器解析;因DNS默认递归由教育网变更为移动造成网络抖动的域名地址发送到电信DNS解析,出口线路选择由防火墙配置的静态路由进行支持,对应关系如表 5所示。
(3)修改缓存设备配置参数,改进主动和被动缓存触发因子,优化资源淘汰调度算法以及服务对象,并进行集群部署。
(4)流控设备透明接入到防火墙和核心设备之间,配置限制单用户会话数总量和新建速率,预防DDOS攻击等可能对网络设备造成的性能影响,并根据需求在设备上做临时性的保障限制策略。
3.DNS资源调度优化算法
当DNS返回的IP地址在移动地址段中,由于线路质量问题,访问部分站点会不稳定,即上文所述的网络抖动,可以通过用户反馈手工搜集这些站点,写入到电信转发区,但工作量不仅大而且用户评价不好。本文提出了基于用户行为的DNS资源优化调度算法来解决这个问题。结合站点请求解析次数、在Alexa网站中的排名以及是否拥有运营商镜像等因子进行分析计算,将满足要求需要保障的域名解析写入到电信转发区中。
算法描述:
定义网站域名集合D,移动地址段M,被解析站点域名d,d∈D,域名被请求解析次数m,在移动DNS中解析出来的地址p。
当p∈M,则统计校园网到地址p的时延数据,并计算平均时延t。
定义Δ,表示每一个域名在当前线路需要被调整的系数,由网络稳定性、时延性以及由归一化后的请求次数α计算所得,Δ值越大,表明越需要进行调整,其中
α=■(1)
Δ=(1+■■(tj-■)2)×■× α (2)
在p∈M的条件下,将域名d发送到电信DNS进行解析,并计算Δ',得到电信线路的调整系数。
定义λ=Δ-Δ',λ为二者距离,定义调整阙值β,β>0,当λ>β时,参考Δ初始值并结合实际访问感受,将对应域名迁移到电信保障转发域中。
三、实验分析
选取了某个时刻的域名请求排行,收集时延信息,并分别予以计算Δ和Δ',如表 6所示。
由实验数据结合实际访问网站感受进行分类,经验数据表明,当网页打开速度有明显变化时,即可考虑将该域名解析进行迁移。
通过多系统间的协同调整,在没有限速的情况下,目前各出口线路使用状况与调整之前对比如图3所示,各线路都在较高负荷中运行,视频服务出口线路因提供有限服务,从而流量不会很高。通过对百度贴吧、学校BBS论坛等信息的观测,校园网用户普遍反应目前使用校园网进行页面浏览、游戏的质量以及下载速度得到了很大的提升,达到了预期的网络负载均衡效果。
经过调整后,校园网下行带宽利用率得到了明显提升,如图 4所示,非高峰期流量已经突破调整前的晚高峰流量。
在出口防火墙上面观察,P2P应用已经从教育网、移动线路上分流;电信、联通线路上以Http应用和其他TCP协议为主,如表 7所示。
为了验证每个用户在电信、联通线路中带宽占用情况,在流控设备上进行单用户带宽限制测试,当非P2P应用的带宽限制依次设置为10Mbps、6Mbps、4Mbps时,发现电信、联通线路下行流量变化不明显,即单个用户在优质线路上的带宽占用率不显著,而3万多校园网用户决定此线路会在高负荷下运行。
在负载均衡方法中,将缓存设备也作为一个重要的因素予以考虑,策略调整后缓存设备也发挥了明显的作用。在缓存磁盘全部格式化清空后,设备用了约7天左右的时间进行高速缓存,如图 5所示;稳定后,为校园网用户提供约300Mbps的流量服务,进一步降低了出口压力,如图 6所示。图 5和图 6中实心区域为回源流量,线条为服务流量。
实现高校多出口网络的负载均衡,首先需要知道各学校网络的流量构成,比如总体而言,文科院校视频流量会相对较高,而理工科院校点对点下载的流量会很高,一般负载均衡设备从线路的角度出发,前提也基于线路质量是等价,在高校特殊的网络中直接应用可能带来相反的效果。本文针对特定的网络场景,不但平衡了线路流量,还提升了线路利用率,并提出一种解决网络抖动的方法,经实验验证,达到了预期的效果。
参考文献:
[1]张焕杰,夏玉良.用户自主选择的校园网出口策略路由实现[J].通信学报,2013 (S2): 14-22.
[2]郭秉礼,黄善国,罗沛等.基于负载均衡的联合路由策略[J].北京邮电大学学报,2009,32(4): 1-5.
[3]王云岚,李增智,薛军等.基于DNS的负载均衡算法研究[J].计算机工程与应用,2002(4):11-13.
[4]吴璇,隋红建.负载均衡技术在防火墙系统中的应用[J].计算机应用,2003,23(S2): 22-24.
[5]常潘,沈富可.使用域名负载均衡技术实现校园网对外服务器的高速访问[J].计算机应用,2007, 27(7):1585-1586.
[6]申健.校园网路由策略分析及应用[J].实验技术与管理,2013, 30(11): 122-125.
[7]Su Bing, Yu Haiyang, Lu Jieru. Traffic optimizationon the dynamic switching of ABR for OSPF networks[C].2009 International Conference on Information Technology and Computer Science,2009:429-432.
[8]谢胜军.有线无线一体化的扁平校园网设计[J].通信学报, 2013, 34(Z2):79-83.
[9]张志成,邹仁明,张晓.基于冗余架构的校园网多出口系统的设计与实现[J].计算机科学,2012,39(10): 219-222.
[10]彭隽,劳凤丹,邹仁明.万兆全冗余校园网出口升级改造方案[J].武汉大学学报(理学版),2012, 58(S1):120-124.
[11]杜跃进,张兆心,王克等.基于用户感知的DNS解析网络性能测量技术[J].南京航空航天大学学报,2013, 45(1):110-115.
[12]王艳歌.一种基于智能DNS解析及静态地址映射的快速访问策略[J].科技通报,2012, 28(12):146-148.
[13]秦臻,周帆,李乐民.DNS对CDN流媒体服务质量的影响[J].电子科技大学学报,2013,42(4):577-580.
负载均衡算法的应用研究 篇10
在我们现实生活中经常讨论及研究的负载均衡算法一般有以下两大类:①静态负载均衡算法。这种算法不考虑服务器在实际运行过程中的负载情况, 而只是根据人们预先的设定对用户任务请求进行分配;②动态负载均衡算法。该类算法主要以各服务器当前的负载情况作为分配任务的依据, 能够充分利用各服务器的处理能力来减小其对用户服务的响应速度。动态算法中通常需要一个前端节点, 称为负载均衡器 (Load Balancer, 简称LB) 和后端的真实服务器 (Real Server, 简称RS) 共同组成虚拟服务器 (Virtual Server, 简称VS) 。
虽然动态负载均衡算法如加权最小连接法, 其运行中参照各服务器当前状态下其任务连接数及服务器的性能来将用户任务进行分配, 但很容易发现这类算法存在以下几个方面不足:首先, 该类算法出发点是以各服务器当前任务连接数来衡量服务节点负载, 而由于各服务器目前连接数并不一定完全反映各网络服务器的真实负载情况;其次, 由于负载均衡器集中控制整个负载均衡系统, 随着用户并发连接数量的突发增加, 负载均衡器本身的负载也会变得非常大, 导致负载均衡器自身成为整个服务中的瓶颈。
通过上述分析, 笔者认为负载均衡算法设计过程应能实现以下目标:首先, 应对各服务器的处理能力及当前负载情况予以充分考虑, 保证系统在长时间运行状态下各节点的负载情况不发生较大偏斜;其次, 充分利用节点的处理能力, 把各节点信息的收集、计算工作放到各个服务器节点上, 从而避免负载均衡器系统瓶颈的出现;再次, 在充分考虑前两个目标的基础下, 减小负载均衡算法运行的复杂性。
2基于内容识别动态反馈的负载均衡算法设计
通过上述的分析, 需设计出一种算法:该算法首先应能根据客户的请求, 进行相应服务器的选择;其次应能较好地向LB反馈各网络服务器的当前负载;最后LB能根据得到的网络服务器负载和其相关参数进行客户请求的分配。
由于动态反馈是有时间间隔的, 人们无法获取实时的节点负载情况。人们引入了负载冗余、负载增量等概念, 以便对网络服务器节点的实际负载进行真实预测。比如:负载增量是指用户请求任务R1会给承接任务的网络服务器所增加的负载INC (Ri) 。以服务器节点连接数为参考的算法中, 节点负载增量的计算可以使用如下计算公式:INC (R) =L (Si) /n。在此公式中, L (Si) 是使用动态反馈方法所得到的网络服务器节点的负载量, n表示相关节点的连接数量。从而根据上述可以得出网络服务器目前的实际负载L′ (Si) :
然后, LB根据网络服务器的实际负载进行任务的分配。在这种负载增量和负载冗余方案中, 由于未能考虑到每个网络服务器节点的处理能力, 即在服务节点冗余大约相等的情况下, 对于新的请求该如何分配, 仍是需要思考的问题。下面提出改进的基于内容识别的负载均衡动态反馈算法:
对几个相关概念给出定义:服务器集群集合s={s0, s1, …, sn-1};用户任务请求集合R={R1, R2, …, Rm};用户服务类型的集合T={T1, T2, …, Tp};undefined, 表示在相关服务器在接收所有服务中服务类型为Tj的TCP连接数的和;f (Tj) 表示在所有服务器中服务类型为Tj (j=1…l) 的访问量极限值;服务器性能C (Si) ;每一个服务器综合负载值LOADi;服务器节点负载增量INC (Ri) 。网络服务器节点信息表 (Net _ Server_ Cluster _ List, NSCL) :主要记录网络服务器节点的MAC地址、存放在该网络服务器节点上的服务类型Tj (j=1…p) 、IP地址、负载状态参数以及相对应的Re和f (T) 等信息。该表主要由负载均衡器维护, 主要负责监测节点的负载状态以及节点是否正常工作 (利用该负责均衡器主要实现加入恢复正常的节点、自动删除失效的节点) 。网络服务器映射表 (Net _Server _ M aping _ List, 简称NSML) :主要记录服务类型Tj (j=1…p) , 以及存放该Tj (j=1…p) 的服务器集群集合等信息。
在该算法中负载均衡器能够根据相关用户请求服务的类型在NSML表中查找适当的服务器;利用动态反馈机制在后端服务器节点中选取负载最小的服务器, 在更新网络服务器节点负载信息的时候, 引入负载比率M, 即我们采用综合负载值LOADi和节点负载增量INC (Ri) , 来求出当前网络服务器的实际负载L′ (Si) , 并结合服务器性能C (Si) 参数, 计算出网络服务器中负载比率最小的服务器, 将请求任务分配给计算出的服务器;另外, 当NSML中的服务器出现过载时, 将所有服务器中负载最重的服务器从NSML中删除, 从而提高相关服务器的缓存命中率。算法描述流程如图1。
图1的具体描述如下:
①当LB接到用户一个新的数据流发送请求Ri时, 从TCP连接请求中解析出请求的服务类型Tj (j=1…p) ;
②负载均衡器刷新其保存的NSML, 若在NSML表中该请求的映射节点为空则转到步骤④, 否则转步骤③;
③在②的基础上, 在NSML表中搜索负载最轻的网络服务器RS, 记为Sa, 通过相应的计算, 如果Sa.Re
④利用上述设计动态反馈机制从整个服务器集群中挑选负载最轻的网络服务器RS, 记为Sb, 并将Sb赋值给Sa;
⑤如果Sa不空转步骤⑥, 否则转入步骤⑩;
⑥如果Sa.Re
⑦在NSML表中添加Sn;
⑧当NSML表中存在一个以上的RS时, 并计算某节点Sc其, 当Re值接近RT (Tj) , 则将Sc节点从NSML表中删除;
⑨将Ri发送到节点Sa, 算法结束;
⑩拒绝请求, 返回空值, 算法结束。
3负载均衡技术的实际应用
南京工程高等职业学校成立于1956年, 是一所承担五年制大专教育的职业学校, 现有两个教学区麒麟门和百家湖, 在校生规模达到1.5万人。随着时间的推移, 校园网络服务器数量由原来的0个增加到10个 (校园网和联合职业技术学院Web服务器各1台、校内办公系统服务器1台、中国知网校内服务器1台、后台数据库服务器6台) , 如果对每台服务器都分配唯一的IP地址, 必然会给用户的访问和网络管理带来不便;如果采用服务器集群技术, 同样会造成访问地址的复杂化和负载不平衡;同时校服务器之间的流量分配目前是采用随机方式, 其运行中不会考虑服务器当前的负载情况, 在这种情形之下可能会造成连接失败。给学校的招生就业、成绩查询、信息查询、在线考试带来较大的损失。
鉴于上述情况, 拟对校园网络进行重新规划和设计, 在现有状况的基础上, 利用市场中现有的技术将学校现有两个校区进行功能规划, 在校内网络服务器问题上, 拟通过服务器负载均衡机制, 保证用户访问流量能在各服务器上均衡分配, 并当所有服务器中某一台服务器发生故障时能被及时检测到, 对故障服务器进行有效自动隔离, 直到该服务器恢复正常后自动加入校服务器群, 实现透明的容错, 保证学校服务器整体性能得到大幅提升。
3.1整体方案设计
根据上篇分析以及充分进行市场调研的基础之上, 结合我单位实际项目需求, 拟采用深信服AD服务器负载均衡解决方案, 对校服务器运行现状进行规划, 通过利用SINFOR AD应用交付设备来实现我校网络中多台服务器的智能负载。在方案中, 利用使两台SINFOR AD以主备的方式进行备份, 从而实现网络中多台服务器的负载均衡及冗余。其拓扑结构如图2。
本方案设计主要有如下优点:首先在实现流量的负载均衡的同时, 保证整个网络服务器系统的稳定和高可用性, 其次本方案保持了学校校原有的网络体系结构。
校园网络服务器负载方案具体实现流程如下:首先, 网络中布置的SINFOR AD设备接收到各网络用户发出服务请求;其次, SINFOR AD根据预先设定好的负载均衡算法, 将各用户请求中的数据包进行解析, 将数据包中目的IP地址改为相应后台服务器IP地址, 并将用户数据包发出到选定的服务器;再次, 后台服务器在接收数据包并进行处理后, 将对服务请求所产生的应答包发回到SINFOR AD;最后, SINFOR AD设备收到应答包后将其中的源地址改回成VIP的地址, 发回客户端, 由此就完成了一个标准的服务器负载平衡的流程。
通过在SINFOR AD上配置Virtual Server实现服务器负载均衡, 同时利用SINFOR AD可持续检查服务器的健康状态, 一旦发现故障服务器, 则将其从负载均衡组中移除。
3.2方案关键技术
(1) 服务器负载均衡算法。
SINFOR AD 通过VIP (虚拟IP地址, 由IP地址和TCP/UDP应用的端口组成的一个IP) 来为用户的一个或多个目标服务器提供负载均衡服务。为了保证多个用户的请求能够智能地转发到后端的应用服务器, 确保在即使某个应用服务器出现故障的时候不会中断现有的应用, SIFNOR AD通过对目标服务器进行L2到L7合理性进行不间断检查。当用户请求目标服务器相关服务时, SINFOR AD根椐对服务器群组中各个服务器的检查情况, 选择性能最佳的服务器来应答相应用户的请求。
这样, 所有流量均衡地分配到各个服务器, 不仅充分利用所有的服务器资源, 而且各个服务器均衡地负担流量处理任务, 而且有效地避免服务器处理任务“不平衡”现象的发生。
(2) 服务器健康检查。
该方案需要解决的问题就是如何提供快速的访问服务, 而服务器是所有应用的承载体, 如果不能对应用进行健康检查, 就无法做到对应用的高可靠性的保障。
SINFOR AD的高级健康检查功能, 能够准确对应用层健康检查。SINFOR AD支持包括基础网络检查 (Ping) 、4层应用检查 (TCP/UDP port) 以及使用各种预先定义的检查程序和用户定制的检查程序。
其功能中的7层监视功能, 可以对各服务器在应用和内容等所有协议层上的工作状态进行监视。一旦发现任何故障, 用户请求立刻被透明地复位到服务器集群中正常工作的服务器上。从而保证用户始终能够获得正确的信息。
(3) 会话保持。
SINFOR AD不仅可以为关键业务站点提供高可用性和智能负载平衡, 与此同时, 还可以识别用户固定访问特定服务器的要求, 以支持用户重新建立到特定服务器的连接。在这种特定情况下, SINFOR AD将放弃原有的负载均衡算法。
举例来说, 假设一位用户在淘宝网采购了下了一个订单, 然后未进行交易支付就离开了该网站。如果在其重新登录网站后, SINFOR AD将客户请求路由至不同的服务器, 那么新的服务器对该用户的数据和其所购买的商品将一无所知。如果客户第一次访问的服务器没有和其它的服务器在同一个后台数据库服务器中存储用户信息及其选购商品的话, 那么具体的订单数据在新的服务器上是查询不到的, 这样用户只能再次重复第一次的动作。
通过会话保持技术可以为客户选择用户曾连接上的那台服务器, 实现用户请求无缝处理。SINFOR AD会话保持功能将减少新建连接的数量, 这将有助于减小负载均衡机系统开销。
4结语
负载均衡技术一直是计算机技术研究的一个热点, 随着计算机网络的进一步普及以及移动通信技术的迅速发展, 人们对网络服务质量要求也越来越高。如何实现提高网络服务质量及如何提高网络服务器的性能越来越受到网络服务提供商的关注。
本文在服务器负载均衡算法领域作了初步研究, 并提出了基于内容识别动态反馈的负载均衡算法, 结合学校发展和网络的现状, 使用SINFOR AD设计方案, 对当网络中大量的并发访问或数据流量出现问题和如何大幅度提高系统处理能力问题进行了有效解决。
摘要:随着视频技术、网络教育、在线招生系统和网络游戏的发展, 网上信息交换量几乎呈指数增长, 从而需要更高性能的各类网络服务器为更多用户提供网络应用服务。通过构建合理的网络服务器负载均衡系统, 可以充分发挥服务器的性能和网络带宽资源, 为客户提供良好网络服务。对几种常用的负载均衡技术和算法进行了比较分析, 提出了基于内容识别的动态反馈负载均衡算法。并对南京工程高等职业学校网络服务器进行负载均衡方案整体设计。
关键词:网络服务器,负载均衡,动态反馈
参考文献
[1]魏臻, 王雪辉, 周霞.基于内容识别的Web集群负载均衡算法的研究[J].计算机工程与设计, 2006 (18) .
[2]龚梅, 王鹏, 吴跃.一种集群系统的透明动态反馈负载均衡算法[J].计算机应用, 2007 (11) .
[3]田绍亮, 左明, 吴绍伟.一种改进的基于动态反馈的负载均衡算法[J].计算机工程与设计, 2007 (3) .
[4]刘健, 徐磊, 张维明.基于动态反馈的负载均衡算法[J].计算机工程与科学, 2003 (5) .