您好,欢迎访问三七文档
Vol.15,No.1©2004JournalofSoftware软件学报1000-9825/2004/15(01)0000负载均衡技术综述殷玮玮1+1(南京大学软件学院,江苏南京210093)OverviewofLoadBalancingTechnologyYINWei-Wei1+1(DepartmentofSoftwareInstitute,NanjingUniversity,Nanjing210093,China)+Correspondingauthor:Phn+86-**-****-****,Fax+86-**-****-****,E-mail:bingyu0046@126.com,(1):0000~0000.:Loadbalancetechnologybasedonexistingnetworkstructure,providesacheapandefficientmethodforexpandingbandwidthoftheserverandincreasetheserverthroughput,strengthensnetworkdataprocessingability,increasesnetworkflexibilityandavailability.Thispaperintroducesindetailthethreeaspects:theclassificationofloadbalancing,loadbalancingandloadbalancingalgorithm,thencomparestheloadbalancingalgorithmcommonlyusedandtheiradvantagesanddisadvantages,anddescribesthedynamicloadbalancingstrategyandthreekindsofschedulingmethods.Keywords:loadbalancingtechnology;theloadconditions;thestaticloadbalancingalgorithm;thedynamicloadbalancingalgorithm摘要:负载均衡技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。本文从负载均衡技术的分类、负载均衡技术和负载均衡算法三个方面对负载均衡做了详细介绍,对常用负载均衡算法做了优缺点比较,并对动态负载均衡算法遵循的策略和三种调度方式做了阐述。关键词:负载均衡技术;负载状况;静态负载均衡算法;动态负载均衡算法中图法分类号:****文献标识码:A随着大规模并行分布处理系统,特别是网络工作站机群系统的广泛应用,如何采取有效的调度策略来平衡各结点(机)的负载,从而提高整个系统资源的利用率,已成为人们的研究热点。负载均衡技术基于现有网络结构,提供了一种扩展服务器带宽和增加服务器吞吐量的廉价有效的方法,加强了网络数据处理能力,提高了网络的灵活性和可用性。负载均衡的应用,能够有效地解决网络拥塞问题,能够就近提供服务,实现地理位置无关性(异地负载均衡)。同时,这项技术还能提高服务器的响应速度,提高服务器及其它资源的利用Supportedbythe****FoundationofChinaunderGrantNo.****,****(基金中文完整名称);the****FoundationofChinaunderGrantNo.****,****(基金中文完整名称)作者简介:殷玮玮(1992-),女,河南舞阳人,硕士,主要研究领域为分布式计算,负载均衡.2JournalofSoftware软件学报2004,15(1)效率,避免网络关键部位出现单点失效,从而为用户提供更好的访问质量。1负载均衡技术的分类1.1软件和硬件负载均衡从负载均衡采用的设备可将其分为软件负载均衡和硬件负载均衡。软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS(DomainNameServer)LoadBalance等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug往往会引起安全问题。硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备我们通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大幅提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求[1]。1.2本地和全局负载均衡负载均衡从其应用的地理结构上分为本地负载均衡(LocalLoadBalance)和全局负载均衡(GlobalLoadBalance,也叫地域负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间做负载均衡。本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度;也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。1.3静态和动态负载均衡负载均衡包括静态负载平衡和动态负载平衡。只是利用系统负载的平均信息,而忽视系统当前的负载状况的方法被称为静态负载均衡;根据系统当前的负载状况来调整任务划分的方法被称为动态负载均衡[2]。此内容将在第3小节详述。1.4网络层次上的负载均衡针对网络上负载过重的不同瓶颈所在,从网络的不同层次入手,我们可以采用相应的负载均衡技术来解决现有问题。随着带宽增加,数据流量不断增大,网络核心部分的数据接口将面临瓶颈问题,原有的单一线路将很难满足需求,而且线路的升级又过于昂贵甚至难以实现,这时就可以考虑采用链路聚合(Trunking)技术。链路聚合技术(第二层负载均衡)将多条物理链路当作一条单一的聚合逻辑链路使用,网络数据流量由聚合逻辑链路中所有物理链路共同承担,由此在逻辑上增大了链路的容量,使其能满足带宽增加的需求。2负载均衡技术负载均衡有两方面的含义:首先,将大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。负载均衡能够均衡所有的服务器和应用之间作者名等:题目3的通信负载,根据实时响应时间进行判断,将任务交由负载最轻的服务器来处理,以实现真正的智能通信管理和最佳的服务性能。目前,负载均衡技术面临三大问题:服务器的负载状况的评价、如何获取以及获取后如何处理[3]。2.1负载状况2.1.1负载状况的评价负载状况的评价由三类组成:静态的、统计类的和动态的。静态的由资源决定,可以数字化评价;统计类的只能作为网站扩充的依据;动态地使用探测结果来评价。2.1.2负载状况的获取由于系统中各服务器根据所有服务器的负载情况来决定新的用户访问请求的取舍,因此,各服务器必须知道其他服务器的负载状况,这要求每个服务器必须将自己的当前负载及时通知其他服务器。探知负载状况的技术主要有3种:1)利用agent技术使用网管协议SNMP:在需要的服务器上运行设计的agent,定时通知分配器,从而得到服务器的确切情况。2)第三方的软件:有一些第三方开发的软件可以完成这种工作,需要分配器有相应的接口,从而可以调整分配的结果。3)自己开发软件去主动获取:最简单的集成方法就是自己去开发,由分配器去探测服务器的负载状况。2.2负载均衡技术根据实现层次不同,可将负载均衡技术分为如下几类:2.2.1基于客户端的负载均衡这种模式需要每个客户程序均具备一定的服务器集群知识,在客户端运行特定的程序,该程序通过定期或不定期的收集服务器群的运行参数:CPU占用情况、磁盘IO、内存等动态信息,再根据某种选择策略,找到可以提供服务的最佳服务器,将本地的应用请求发向它。整个过程对于应用程序来说是完全透明的,所有的工作都在运行时处理。比如,在Berkeley研究的smartclient中,服务提供一个JavaApplet在客户方浏览器中运行,Applet向各个服务器发请求来收集服务器的负载等信息,再根据这些信息将客户的请求发到相应的服务器;当服务器没有响应时,Applet向另一个服务器转发请求,实现高可用性。这种技术存在明显的通用性问题,因为每一个客户端都要安装这个特殊的程序;并且,为了保证应用层的透明运行,需要针对每一个应用程序加以修改,要对代码进行重新开发,工作量比较大,因而这种技术仅适用于特殊的应用场合。2.2.2应用服务器的负载均衡如果将客户端的负载均衡层移植到某一个中间平台,形成三层结构,则客户端应用可以不需要做特殊的修改,透明的通过中间层应用服务器将请求均衡到相应的服务结点。比较常见的实现手段就是反向代理技术。通过反向代理服务器,可以将请求按一定的策略转发给多台服务器,或者可以直接将缓存的数据返回客户端,这样的加速模式在一定程度上可以提升客户端的访问速度,从而达到负载均衡的目的,目前广泛采用的有HTTP反向代理技术。然而,反向代理技术必须为每一种服务都专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对Web服务器的负载均衡;随着并发连接数量的增加,代理服务器本身的负载也会变得非常大,最后反向代理服务器本身会成为服务的瓶颈。2.2.3基于DNS域名系统的负载均衡最早的负载均衡技术是通过DNS轮循来实现的,DNS负载均衡技术是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。其中最为著名的是NCSAWeb服务器。4JournalofSoftware软件学报2004,15(1)基于DNS的方法简单易行,没有瓶颈问题,但是不能考虑距离远近,减少记录的有效期TTL易造成网络信息冗余。尽管如此,它还是一种非常有效的做法,被包括Yahoo在内的很多大型网站采用[4]。DNS负载均衡存在的缺点是DNS负载均衡采用的是简单的轮循负载算法,无法区分服务器的差异,不能做到为性能较好的服务器多分配请求。此外,为了使地址能随机分配,保证不同的客户计算机能均匀获得不同的地址,就应使刷新时间尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址,然而将过期时间设置得过短,将使DNS流量大增,而造成额外的网络问题。2.2.4高层协议的负载均衡高层协议负载均衡技术通常是指Web内容交换或七层交换,该方法综合考虑客户请求的内容,如URL名称、类型、Cookies
本文标题:负载均衡技术综述
链接地址:https://www.777doc.com/doc-2034790 .html