校园网网络负载均衡技术研究
2009-06-20刘赣华
刘赣华
摘要:随着Intemet的迅猛发展,互联网用户数和流量呈几何级数增加,造成服务器超负荷运转,负载平衡调度是解决服务器超负荷运转的有效途径。本文分析了服务器负载特点和负载均衡常见调度算法,提出了自适应调度算法,根据服务器负载状态变化进行资源调度。
关键词:服务器;监测;负载平衡;调度算法
1负载均衡技术概况
近年来,随着计算机网络技术及应用的迅猛发展,计算机网络的应用已进入社会各项事物中,给人们的工作、生活带来了巨大的改善。但是随着网络中用户数的不断增长、服务需求的不断增多,网络的数据流量将急剧增加,服务器的负荷也将越来越重,使得现有网络的各个核心部分的处理能力和计算强度也相应地增大,这样单一的服务器设备根本无法承担。
针对此情况而衍生出来的一种有效的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡技术。
负载均衡技术就是在网络中使用多台服务器提供服务,通过一定机制使他们共同分担系统负载,对单一的服务器没有太高的性能要求,系统负载增加,可以多增加服务器来分担。对用户而言,整个系统仿佛是一台单一的逻辑服务器,这样的系统能够提供较强的可扩展性和较好的吞吐性能。
负载平衡技术是目前国内外研究的重点课题之一。目前负载平衡技术主要有:
(1)基于RR-DNS的解决方法,其特点是采用动态DNS轮询,无需复杂的配置和管理,实现起来简单。
(2)代理服务器解决方法,其特点是将客户请求通过代理服务器均匀转发给多台服务器,从而达到负载平衡的目的。
(3)基于应用层的负载平衡解决方法,其特点是通过一个基于应用层的负载平衡器,分析客户请求,根据各个服务器的负载情况,选出一台服务器,将请求重定向到该服务器进行访问。应用层负载平衡调度的典型代表有zeus负载调度器、pwe、reverse-proxy等;基于IP层的负载平衡解决方法,通过网络地址转换(NAT)或IP隧道技术实现负载平衡。
目前高校网络的应用比较复杂,对网络性能的要求也比较高,这就使负载均衡技术在校园网应用中有很大的用武之地。
2负载均衡技术的常用调度算法
在负载平衡的实现中,调度算法是研究的核心内容,目前常见的负载平衡调度算法有:
2.1循环调度算法:是以轮叫的方式依次将请求调度到不同的服务器,即每次调度执行i=(i+1) mod n,并选出第i台服务器。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
2.2加权循环调度算法:可以解决服务器之间处理性能不一致,并用权值来表现。服务器缺省权值为1,假设服务器A、B的权值分别是1、2,表示服务器B处理性能是A的2倍。加权循环算法将按照权值的高低和循环算法来将请求分配到各服务器,权值高的先收到连接,比权值低的服务器处理更多的连接,相同权值的服务器处理相同的连接。
2.3最小连接调度算法:是把新的连接请求分配到当前连接数最小的服务器。最小连接调度是一种动态调度算法,它通过服务器当前所活跃的连接数来估计服务器的负载情况。调度器需要记录各个服务器己建立连接的数目,当一个请求被调度到某台服务器,其连接数加一;当连接中止或超时,其连接数减一。最小连接调度算法在各个服务器的处理能力不同时,该算法不理想。
2.4加权最小连接调度算法:是最小连接调度的改进,各个服务器用相应的权值表示其处理性能。服务器的缺省权值为1,系统管理员可以动态地设置服务器的权值。加权最小连接调度在调度新连接时尽可能使服务器的已建立连接数和其权值成比例。
2.5目标地址散列调度算法:是针对目标IP地址的负载平衡,是一种静态映射算法。它通过一个散列(Hash)函数将一个目标IP地址映射到一台服务器。
此外还有源地址散列调度算法等等。
以上所述的常用调度算法在解决服务器负载平衡方面起到了一定的作用,但随着网络规模的不断扩大,访问请求的增加,常用调度算法在调度性能上存在不足,主要问题是:
常用调度算法没有充分考虑服务器的负载状态,其中循环调度算法和加权循环调度算法,是一种无状态的调度算法,属于静态调度;目标地址散列和源地址散列调度算法是一种静态映射算法;最小连接调度和加权最小连接调度算法,虽然考虑到了服务器的连接请求数状态,是一种动态调度,但服务器的负载不能仅仅是请求连接数,还要考虑CPU、流量等状态。
常用调度算法不能有效根据服务器的实时综合状态反馈,调度负载请求到相应的服务器。
3根据服务器负载状态进行调度的自适应调度算法
在网络系统的监控中,可以通过MRTG工具获得每台服务器的CPU负载、网络流量、内存占用率等服务器负载数据,代理服务器根据服务器的负载数据和相应的权值计算每台服务器的负载排名,再在分析已有算法的基础上,通过使用自适应调度算法进行合理调度,实现负载平衡。
3.1算法描述
设系统中有m个服务器,ri[j](1≤i≤m,1≤j≤3)表示第i个服务器的CPU负载、网络流量、内存占用率的负载参数,wj(1≤j≤3)表示服务器的CPU负载、网络流量、内存占用率的权值,每个服务器i的负载情况记为load[i]=∑ri[j]*wj。代理服务器根据每台服务器的负载情况,通过调度算法把请求调度到相应的服务器。
算法描述如下:
MaxLoadValue=0;
for(i=l;i {for(j=1;j<=3;j++) load[i]=load[i]+ri[j]*Wj if(MaxLoadValue {MaxLoadValue=load[i]; Serverld=i}} if(MaxLoadValue>管理阙值) stop Server[i] 一定时间: else {继续对若干台服务器进行获取性能参数的操作并计算加权值} 3.2自适应调度算法应用分析及测试 3.2.1测试环境 由三台服务器和两台客户端计算机组成,如图1所示。 SNMP采集服务器运行Linux系统,安装MRTG管理工具,每隔15秒采集三台服务器上的CPU负载、网络流量和内存占用率的参数。各应用服务器采用Windows Server2003和IIS。 代理服务器运行Windows Server2003,根据SNMP采集服务器的参数和相应的负载权值,计算三台服务器的综合负载,按照设计的调度算法,将客户端计算机的请求合理调度到三台服务器上,实现三台服务器的负载平衡。 对于一个Web服务器,Web访问响应时间主要与Web服务器本身性能及网络传输情况有关,现假定服务器和网络情况一定。在测试Web服务器性能时主要采用平均应答延迟、吞吐率两个参数。吞吐率定义为平均每秒处理的请求个数,平均应答延迟定义为从建立连接到应答结束之间的时间。 3.2.2测试结果 测试实验以循环调度算法、最小连接调度算法、加权最小连接调度算法和根据服务器负载状态自适应调度算法来进行测试比较。通过MRTG工具测得三台服务器的CPU负载、网络流量和内存占用率数据,比较四种调度算法的平均应答延迟和吞吐率两个参数。循环调度算法、最小连接调度算法、加权最小连接调度算法作为调度性能比较的基准。在中低负载下,四种算法的效率相差不大,但在中高负载和重负载下,随着请求强度的增大,根据服务器负载状态自适应调度算法具有更好的效率。 4结束语 目前,我国各高校都已基本建立了一定规模的校园网,随着学校将来网络规模及网络应用的不断扩大,校园网流量将急剧增加,服务器的负荷也将越来越重。利用负载平衡技术及优良的系统方案实现多台服务器的负载平衡,是当前网络体系结构中一种有效的解决服务器超负荷运转的方法。 参考文献: [1]朱文涛,洪佩琳,李津生.基于Linux虚拟服务器的负载均衡.计算机工程,2002(l2):55-57. [2]陈志刚,刘安丰,熊策,张连明.一种有效负载均衡的网格Web服务体系结构模型.计算机学报,2005(4):458-465. [3]李克清,陈萃萌,谭辉.一种动态自适应的网格负载平衡调度算法.武汉大学学报(理学版),2006(2):69-72. [4]谢希仁.计算机网络第2版.北京:电子工业出版社,1999. [5]孙泳,史忠植.MRTG的研究与部署.计算机应用,2004(3):22-24.