负载均衡技术_第1页
负载均衡技术_第2页
负载均衡技术_第3页
负载均衡技术_第4页
负载均衡技术_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

负载均衡技术Internet的规模每一百天就会增长一倍,客户希望获得7天24小时的不间断可用性及较快的系统反映时间,而不愿屡次看到某个站点“ServerTooBusy”及频繁的系统故障。网络的各个核心部分随着业务量的提高、访问量和数据流量的快速增长,其解决能力和计算强度也相应增大,使得单一设备主线无法承担。在此情况下,假如扔掉现有设备去做大量的硬件升级,这样将导致现有资源的浪费,并且假如再面临下一次业务量的提高,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量的需求。于是,负载均衡机制应运而生。负载均衡(LoadBalance)建立在现有网络结构之上,它提供了一种便宜有效透明的方法扩展网络设备和服务器的带宽、增长吞吐量、加强网络数据解决能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:一方面,大量的并发访问或数据流量分担到多台节点设备上分别解决,减少用户等待响应的时间;另一方面,单个重负载的运算分担到多台节点设备上做并行解决,每个节点设备解决结束后,将结果汇总,返回给用户,系统解决能力得到大幅度提高。本文所要介绍的负载均衡技术重要是指在均衡服务器群中所有服务器和应用程序之间流量负载的应用,目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。负载均衡技术分类目前有许多不同的负载均衡技术用以满足不同的应用需求,下面从负载均衡所采用的设备对象、应用的网络层次(指OSI参考模型)及应用的地理结构等来分类。软/硬件负载均衡软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNSLoadBalance,CheckPointFirewall-1ConnectControl等,它的优点是基于特定环境,配置简朴,使用灵活,成本低廉,可以满足一般的负载均衡需求。软件解决方案缺陷也较多,由于每台服务器上安装额外的软件运营会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件自身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统自身的Bug,往往会引起安全问题。硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备我们通常称之为负载均衡器,由于专门的设备完毕专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达成最佳的负载均衡需求。负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在互换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。一般而言,硬件负载均衡在功能、性能上优于软件方式,但是成本昂贵。本地/全局负载均衡负载均衡从其应用的地理结构上分为本地负载均衡(LocalLoadBalance)和全局负载均衡(GlobalLoadBalance,也叫地区负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充足运用现有设备,避免服务器单点故障导致数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分派给服务器群内的服务器共同承担。即使是再给现有服务器扩充升级,也只是简朴地增长一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。全局负载均衡重要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(公司内部互联网)来达成资源统一合理分派的目的。全局负载均衡有以下的特点:实现地理位置无关性,可以远距离为用户提供完全的透明服务。

除了能避免服务器、数据中心等的单点失效,也能避免由于ISP专线故障引起的单点失效。

解决网络拥塞问题,提高服务器响应速度,服务就近提供,达成更好的访问质量。网络层次上的负载均衡针对网络上负载过重的不同瓶颈所在,从网络的不同层次入手,我们可以采用相应的负载均衡技术来解决现有问题。随着带宽增长,数据流量不断增大,网络核心部分的数据接口将面临瓶颈问题,原有的单一线路将很难满足需求,并且线路的升级又过于昂贵甚至难以实现,这时就可以考虑采用链路聚合(Trunking)技术。链路聚合技术(第二层负载均衡)将多条物理链路当作一条单一的聚合逻辑链路使用,网络数据流量由聚合逻辑链路中所有物理链路共同承担,由此在逻辑上增大了链路的容量,使其能满足带宽增长的需求。现代负载均衡技术通常操作于网络的第四层或第七层。第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每次TCP连接请求动态使用其中一个内部IP地址,达成负载均衡的目的。在第四层互换机中,此种均衡技术得到广泛的应用,一个目的地址是服务器群VIP(虚拟IP,VirtualIPaddress)连接请求的数据包流经互换机,互换机根据源端和目的IP地址、TCP或UDP端标语和一定的负载均衡策略,在服务器IP和VIP间进行映射,选取服务器群中最佳的服务器来解决连接请求。第七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用。第七层负载均衡技术通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务。第七层负载均衡优点表现在如下几个方面:通过对HTTP报头的检查,可以检测出HTTP400、500和600系列的错误信息,因而能透明地将连接请求重新定向到另一台服务器,避免应用层故障。

可根据流经的数据类型(如判断数据包是图像文献、压缩文献或多媒体文献格式等),把数据流量引向相应内容的服务器来解决,增长系统性能。

能根据连接请求的类型,如是普通文本、图象等静态文档请求,还是asp、cgi等的动态文档请求,把相应的请求引向相应的服务器来解决,提高系统的性能及安全性。第七层负载均衡受到其所支持的协议限制(一般只有HTTP),这样就限制了它应用的广泛性,并且检查HTTP报头会占用大量的系统资源,势必会影响到系统的性能,在大量连接请求的情况下,负载均衡设备自身容易成为网络整体性能的瓶颈。负载均衡策略在实际应用中,我们也许不想仅仅是把客户端的服务请求平均地分派给内部服务器,而不管服务器是否宕机。而是想使PentiumIII服务器比PentiumII能接受更多的服务请求,一台解决服务请求较少的服务器能分派到更多的服务请求,出现故障的服务器将不再接受服务请求直至故障恢复等等。选择合适的负载均衡策略,使多个设备能很好的共同完毕任务,消除或避免现有网络负载分布不均、数据流量拥挤反映时间长的瓶颈。在各负载均衡方式中,针对不同的应用需求,在OSI参考模型的第二、三、四、七层的负载均衡都有相应的负载均衡策略。负载均衡策略的优劣及其实现的难易限度有两个关键因素:一、负载均衡算法,二、对网络系统状况的检测方式和能力。考虑到服务请求的不同类型、服务器的不同解决能力以及随机选择导致的负载分派不均匀等问题,为了更加合理的把负载分派给内部的多个服务器,就需要应用相应的可以对的反映各个服务器解决能力及网络状态的负载均衡算法:轮循均衡(RoundRobin):每一次来自网络的请求轮流分派给内部中的服务器,从1至N然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。

权重轮循均衡(WeightedRoundRobin):根据服务器的不同解决能力,给每个服务器分派不同的权值,使其可以接受相应权值数的服务请求。例如:服务器A的权值被设计成1,B的权值是3,C的权值是6,则服务器A、B、C将分别接受到10%、30%、60%的服务请求。此种均衡算法能保证高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。随机均衡(Random):把来自网络的请求随机分派给内部中的多个服务器。权重随机均衡(WeightedRandom):此种均衡算法类似于权重轮循算法,但是在解决请求分担时是个随机选择的过程。响应速度均衡(ResponseTime):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运营状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。最少连接数均衡(LeastConnection):客户端的每一次请求服务在服务器停留的时间也许会有较大的差异,随着工作时间加长,假如采用简朴的轮循或随机均衡算法,每一台服务器上的连接进程也许会产生极大的不同,并没有达成真正的负载均衡。最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在解决的连接数量,当有新的服务连接请求时,将把当前请求分派给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时解决的请求服务,如FTP。解决能力均衡:此种均衡算法将把服务请求分派给内部中解决负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的解决能力及当前网络运营状况,所以此种均衡算法相对来说更加精确,特别适合运用到第七层(应用层)负载均衡的情况下。DNS响应均衡(FlashDNS):在Internet上,无论是HTTP、FTP或是其它的服务请求,客户端一般都是通过域名解析来找到服务器确切的IP地址的。在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相相应服务器的IP地址(即与此负载均衡设备在同一位地理位置的服务器的IP地址)并返回给客户端,则客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其它的IP地址响应。在种均衡策略适合应用在全局负载均衡的情况下,对本地负载均衡是没故意义的。尽管有多种的负载均衡算法可以较好的把数据流量分派给服务器去负载,但假如负载均衡策略没有对网络系统状况的检测方式和能力,一旦在某台服务器或某段负载均衡设备与服务器网络间出现故障的情况下,负载均衡设备仍然把一部分数据流量引向那台服务器,这势必导致大量的服务请求被丢失,达不到不间断可用性的规定。所以良好的负载均衡策略应有对网络故障、服务器系统故障、应用服务故障的检测方式和能力:Ping侦测:通过ping的方式检测服务器及网络系统状况,此种方式简朴快速,但只能大体检测出网络及服务器上的操作系统是否正常,对服务器上的应用服务检测就无能为力了。TCPOpen侦测:每个服务都会开放某个通过TCP连接,检测服务器上某个TCP端口(如Telnet的23口,HTTP的80口等)是否开放来判断服务是否正常。HTTPURL侦测:比如向HTTP服务器发出一个对main.html文献的访问请求,假如收到错误信息,则认为服务器出现故障。负载均衡策略的优劣除受上面所讲的两个因素影响外,在有些应用情况下,我们需要将来自同一客户端的所有请求都分派给同一台服务器去承担,例如服务器将客户端注册、购物等服务请求信息保存的本地数据库的情况下,把客户端的子请求分派给同一台服务器来解决就显的至关重要了。有两种方式可以解决此问题,一是根据IP地址把来自同一客户端的多次请求分派给同一台服务器解决,客户端IP地址与服务器的相应信息是保存在负载均衡设备上的;二是在客户端浏览器cookie内做独一无二的标记来把多次请求分派给同一台服务器解决,适合通过代理服务器上网的客户端。尚有一种途径外返回模式(OutofPathReturn),当客户端连接请求发送给负载均衡设备的时候,中心负载均衡设备将请求引向某个服务器,服务器的回应请求不再返回给中心负载均衡设备,即绕过流量分派器,直接返回给客户端,因此中心负载均衡设备只负责接受并转发请求,其网络承担就减少了很多,并且给客户端提供了更快的响应时间。此种模式一般用于HTTP服务器群,在各服务器上要安装一块虚拟网络适配器,并将其IP地址设为服务器群的VIP,这样才干在服务器直接回应客户端请求时顺利的达成三次握手。

负载均衡实行要素负载均衡方案应是在网站建设初期就应考虑的问题,但是有时随着访问流量的爆炸性增长,超过决策者的意料,这也就成为不得不面对的问题。当我们在引入某种负载均衡方案乃至具体实行时,像其他的许多方案同样,一方面是拟定当前及将来的应用需求,然后在代价与收效之间做出权衡。针对当前及将来的应用需求,分析网络瓶颈的不同所在,我们就需要确立是采用哪一类的负载均衡技术,采用什么样的均衡策略,在可用性、兼容性、安全性等等方面要满足多大的需求,如此等等。不管负载均衡方案是采用花费较少的软件方式,还是购买代价高昂在性能功能上更强的第四层互换机、负载均衡器等硬件方式来实现,亦或其他种类不同的均衡技术,下面这几项都是我们在引入均衡方案时也许要考虑的问题:

1、性能:性能是我们在引入均衡方案时需要重点考虑的问题,但也是一个最难把握的问题。衡量性能时可将每秒钟通过网络的数据包数目做为一个参数,另一个参数是均衡方案中服务器群所能解决的最大并发连接数目,但是,假设一个均衡系统能解决百万计的并发连接数,可是却只能以每秒2个包的速率转发,这显然是没有任何作用的。性能的优劣与负载均衡设备的解决能力、采用的均衡策略息息相关,并且有两点需要注意:一、均衡方案对服务器群整体的性能,这是响应客户端连接请求速度的关键;二、负载均衡设备自身的性能,避免有大量连接请求时自身性能局限性而成为服务瓶颈。有时我们也可以考虑采用混合型负载均衡策略来提高服务器群的总体性能,如DNS负载均衡与NAT负载均衡相结合。此外,针对有大量静态文档请求的站点,也可以考虑采用高速缓存技术,相对来说更节省费用,更能提高响应性能;对有大量ssl/xml内容传输的站点,更应考虑采用ssl/xml加速技术。

2、可扩展性:IT技术日新月异,一年以前最新的产品,现在或许已是网络中性能最低的产品;业务量的急速上升,一年前的网络,现在需要新一轮的扩展。合适的均衡解决方案应能满足这些需求,能均衡不同操作系统和硬件平台之间的负载,能均衡HTTP、邮件、新闻、代理、数据库、防火墙和Cache等不同服务器的负载,并且能以对客户端完全透明的方式动态增长或删除某些资源。

灵活性:均衡解决方案应能灵活地提供不同的应用需求,满足应用需求的不断变化。在不同的服务器群有不同的应用需求时,应有多样的均衡策略提供更广泛的选择。

可靠性:在对服务质量规定较高的站点,负载均衡解决方案应能为服务器群提供完全的容错性和高可用性。但在负载均衡设备自身出现故障时,应当有良好的冗余解决方案,提高可靠性。使用冗余时,处在同一个冗余单元的多个负载均衡设备必须具有有效的方式以便互相进行监控,保护系统尽也许地避免遭受到重大故障的损失。

3、易管理性:不管是通过软件还是硬件方式的均衡解决方案,我们都希望它有灵活、直观和安全的管理方式,这样便于安装、配置、维护和监控,提高工作效率,避免差错。在硬件负载均衡设备上,目前重要有三种管理方式可供选择:一、命令行接口(CLI:CommandLineInterface),可通过超级终端连接负载均衡设备串行接口来管理,也能telnet远程登录管理,在初始化配置时,往往要用到前者;二、图形用户接口(GUI:GraphicalUserInterfaces),有基于普通web页的管理,也有通过JavaApplet进行安全管理,一般都需要管理端安装有某个版本的浏览器;三、SNMP(SimpleNetworkManagementProtocol,简朴网络管理协议)支持,通过第三方网络管理软件对符合SNMP标准的设备进行管理。负载均衡配置实例

DNS负载均衡DNS负载均衡技术是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文献中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达成负载均衡的目的。DNS负载均衡的优点是经济简朴易行,并且服务器可以位于internet上任意的位置。但它也存在不少缺陷:

为了使本DNS服务器和其他DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分派,一般都要将DNS的刷新时间设立的较小,但太小将会使DNS流量大增导致额外的网络问题。

一旦某个服务器出现故障,即使及时修改了DNS设立,还是要等待足够的时间(刷新时间)才干发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。

DNS负载均衡采用的是简朴的轮循负载算法,不能区分服务器的差异,不能反映服务器的当前运营状态,不能做到为性能较好的服务器多分派请求,甚至会出现客户请求集中在某一台服务器上的情况。

要给每台服务器分派一个internet上的IP地址,这势必会占用过多的IP地址。判断一个站点是否采用了DNS负载均衡的最简朴方式就是连续的ping这个域名,假如多次解析返回的IP地址不相同的话,那么这个站点就很也许采用的就是较为普遍的DNS负载均衡。但也不一定,由于假如采用的是DNS响应均衡,多次解析返回的IP地址也也许会不相同。不妨试试Ping一下.com,.com现假设有三台服务器来应对.com的请求。在采用BIND8.xDNS服务器的unix系统上实现起来比较简朴,只需在该域的数据记录中添加类似下面的结果:www1INA

www2INA

www3INA

wwwINCNAMEwww1

wwwINCNAMEwww2

wwwINCNAMEwww3在NT下的实现也很简朴,下面具体介绍在win2023server下实现DNS负载均衡的过程,NT4.0类似:

打开“管理工具”下的“DNS”,进入DNS服务配置控制台。

打开相应DNS服务器的“属性”,在“高级”选项卡的“服务器选项”中,选中“启用循环”复选框。此步相称于在注册表记录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters中添加一个双字节制值(dword值)RoundRobin,值为1。

打开正向搜索区域的相应区域(如),新建主机添加主机(A)资源记录,记录如下:

wwwINA

wwwINA

wwwINA

在这里可以看到的区别是在NT下一个主机名相应多个IP地址记录,但在unix下,是先添加多个不同的主机名分别相应个自的IP地址,然后再把这些主机赋同一个别名(CNAME)来实现的。

在此需要注意的是,NT下本地子网优先级会取代多宿主名称的循环复用,所以在测试时,假如做测试用的客户机IP地址与主机资源记录的IP在同一有类掩码范围内,就需要清除在“高级”选项卡“服务器选项”中的“启用netmask排序”。NAT负载均衡NAT(NetworkAddressTranslation网络地址转换)简朴地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的InternetIP地址间进行转换。合用于解决InternetIP地址紧张、不想让网络外部知道内部网络结构等的场合下。每次NAT转换势必会增长NAT设备的开销,但这种额外的开销对于大多数网络来说都是微局限性道的,除非在高带宽有大量NAT请求的网络上。NAT负载均衡将一个外部IP地址映射为多个内部IP地址,对每次连接请求动态地转换为一个内部服务器的地址,将外部连接请求引到转换得到地址的那个服务器上,从而达成负载均衡的目的。NAT负载均衡是一种比较完善的负载均衡技术,起着NAT负载均衡功能的设备一般处在内部服务器到外部网间的网关位置,如路由器、防火墙、四层互换机、专用负载均衡器等,均衡算法也较灵活,如随机选择、最少连接数及响应时间等来分派负载。NAT负载均衡可以通过软硬件方式来实现。通过软件方式来实现NAT负载均衡的设备往往受到带宽及系统自身解决能力的限制,由于NAT比较接近网络的低层,因此就可以将它集成在硬件设备中,通常这样的硬件设备是第四层互换机和专用负载均衡器,第四层互换机的一项重要功能就是NAT负载均衡。下面以实例介绍一下Cisco路由器NAT负载均衡的配置:现有一台有一个串行接口和一个Ethernet接口的路由器,Ethernet口连接到内部网络,内部网络上有三台web服务器,但都只是低端配置,为了解决好来自Internet上大量的web连接请求,因此需要在此路由器上做NAT负载均衡配置,把发送到web服务器合法InternetIP地址的报文转换成这三台服务器的内部本地地址。其具体配置过程如下:

做好路由器的基本配置,并定义各个接口在做NAT时是内部还是外部接口。

然后定义一个标准访问列表(standardaccesslist),用来标记要转换的合法IP地址。

再定义NAT地址池来标记内部web服务器的本地地址,注意要用到关键字rotary,表白我们要使用轮循(RoundRobin)的方式从NAT地址池中取出相应IP地址来转换合法IP报文。

最后,把目的地址为访问表中IP的报文转换成地址池中定义的IP地址。相应配置文献如下:

interfaceEthernet0/0

ipaddress48

ipnatinside

!

interfaceSerial0/0

ipaddress48

ipnatoutside

!

ipaccess-list1permit

!

ipnatpoolwebsrvnetmask48typerotary

ipnatinsidedestinationlist1poolwebsrv反向代理负载均衡普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器解决。反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行解决,从而达成负载均衡的目的。反向代理负载均衡能以软件方式来实现,如apachemod_proxy、netscapeproxy等,也可以在高速缓存器、负载均衡器等硬件设备上实现。反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起,提高静态网页的访问速度,提供有益的性能;由于网络外部用户不能直接访问真实的服务器,具有额外的安全性(同理,NAT负载均衡技术也有此优点)。其缺陷重要表现在以下两个方面:

反向代理是处在OSI参考模型第七层应用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对web服务器的负载均衡。

针对每一次代理,代理服务器就必须打开两个连接,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器自身会成为服务的瓶颈。一般来讲,可以用它来对连接数量不是特别大,但每次连接都需要消耗大量解决资源的站点进行负载均衡,如search。下面以在apachemod_proxy下做的反向代理负载均衡为配置实例:在站点.com,我们按提供的内容进行分类,不同的服务器用于提供不同的内容服务,将对,对,对,对://.com上,从而减轻本apache服务器的承担,达成负载均衡的目的。一方面要拟定域名.com在DNS上的记录相应apache服务器接口上具有internet合法注册的IP地址,这样才干使internet上对.com的所有连接请求发送给本台apache服务器。在本台服务器的apache配置文献httpd.conf中添加如下设立:proxypass/news

proxypass/it

proxypass/life

proxypass/love注意,此项设立最佳添加在httpd.conf文献“Section2”以后的位置,服务器-3也应是具有相应功能的www服务器,在重启服务时,最佳用apachectlconfigtest命令检查一下配置是否有误.

混合型负载均衡在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,我们可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达成最佳的性能。我们将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。下图展示了一个应用示例,三个服务器群针对各自的特点,分别采用了不同的负载均衡方式。当客户端发出域名解析请求时,DNS服务器依次把它解析成三个服务器群的VIP,如此把客户端的连接请求分别引向三个服务器群,从而达成了再一次负载均衡的目的。在图中大家也许注意到,负载均衡设备在网络拓朴上,可以处在外部网和内部网络间网关的位置,也可以和内部服务器群处在并行的位置,甚至可以处在内部网络或internet上的任意位置,特别是在采用群集负载均衡时,主线就没有单独的负载均衡设备。服务器群内各服务器只有提供相同内容的服务才有负载均衡的意义,特别是在DNS负载均衡时。要不然,这样会导致大量连接请求的丢失或由于多次返回内容的不同给客户导致混乱。所以,如图的这个示例在实际中也许没有多大的意义,由于如此大的服务内容相同但各服务器群存在大量差异的网站并不多见。但做为一个示例,相信还是很有参考意义的.负载均衡技术之负载均衡器简介负载均衡器可以根据实际的响应时间制定优先级交付决策,从而实现高性能、智能化流量管理,达成最佳的服务器群性能。采用第七层应用控制还可以减少通信高峰期的错误讯息,由于差错控制和流量管理技术可以侦测到一些错误信息,并透明地将会话重定向到另一个服务器,使用户顺利地进行使用。例如,服务器A不可用或者数据库出现错误,错误信息将会返回到负载均衡器上,然后会将客户的访问指向服务器B或者将消息重放到其他数据库中去,整个过程对用户是透明的。目前,许多厂商推出了专用于平衡服务器负载的负载均衡器。目前负载均衡器生产商有:Intel、AlteonWeb、ArrowPoint(已被思科并购)、CoyotePoint、F5Networks、FoundryNetworks、HydraWeb以及RADWare等。负载均衡器的形式多种多样,作为启动器,它以各种形式和大小出现。一些厂商,如Alteon、ArrowPoint,将负载均衡器集成到互换设备中,置于服务器与Internet链接之间;而此外一些厂商,如CoyotePoint、F5Networks以及HydraWeb,则运用两块网络适配器将这一功能集成到PC中,其中一块连接到前端止于Web服务器的Hub上,另一块通过路由器或其他设备连接到Internet上。一旦负载均衡设备检测到所管理的每台服务器承载的负荷量,它会按照一定的算法来分派通信。ArrowPoint公司的CS-100、F5的Big/ip、以及CoyotePoint公司的均衡器都支持循环均衡功能。其解决方法是,均衡器同时向所有可用服务器以命令序列方式发送相同数量的请求。Alteon的AceSwitch180、CoyotePoint的均衡器、F5Networks的Big/ip以及RADWare的Web服务定向器支持这样一种均衡方法:它能以最小的TCP链接将请求发送到服务器。ArrowPoint的CS-100还支持静态负荷均衡选项,这就是说,为服务器分派请求是建立在事先已指定负荷量的基础之上的。举个简朴例子,使用Pentium300的机器应比Pentium200承载更多的请求。由于采用了负载均衡技术,自动故障恢复得以实现,服务的时间可以延长,24×7可靠性和连续运营成为也许。此外,负载均衡器一般也支持途径外返回模式,即绕过流量分派器,为那些焦急等待大量数据文献请求响应的客户提供更快的响应时间。总之,假如负载均衡需求简朴,也就是说,只是接近于通过所有服务器的“共享”级水平,并且网络环境也只是由低速LAN组成,则不需要太高级的均衡产品。同样的,若是静态内容传输,则只要具有循环分派功能的负载均衡器也就可以了。在最新的负载均衡产品中,智能化越来越明显。一些智能化的负载均衡器可以侦测到像数据库错误、服务器不可用等信息,从而采用措施使会话恢复和重定向服务器,使电子商务可以得以顺利进行。多址负载均衡器可以对客户发来的访问请求进行解析,计算出最佳地址,然后将该地址返回客户,使客户自动连接到对其请求来说最佳的数据中心。典型产品:Intel网擎负载均衡器负载均衡服务具体分为本地负载均衡服务和远程负载均衡服务。英特尔公司的网擎(IntelNetStructure)7170网络应用负载均衡器,可应用于本地负载均衡服务。该设备可以平衡服务器群中所有的服务器和应用之间的通信负载,根据实时响应时间进行判断,将任务交由负载最轻的服务器来解决,以实现真正的智能通信管理和优秀的服务器群性能。服务器故障切换和多重冗余特性可以让通信绕过故障点,从而使用户站点始终保持运营和可访问性。并且,每次提供负载均衡服务后,7170网络应用负载均衡器都有记录,天天都会自动生成一个报告,客户通过这一报告还能了解流量的分布情况。英特尔网擎系列中的7190多址负载均衡器可用于远程负载均衡服务。这一设备针对拥有多个网站地址的公司进行专门设计,可以根据单个URL地址将通信路由到方便可用的站点,从而实现广域网范围的负载平衡。为了提高响应速度,7190采用“快速响应模式”,使所有的站点都能对同一用户的访问请求作出响应,响应最快的站点将接受并完毕这一访问任务,而不是在发生用户请求时计算“最快”的路由因而产生额外的延迟时间。管理员可以采用这种模式保证很短的服务器响应时间,也可以选择对用户满意度产生更大影响的其他算法。系统在后台收集多站点状态信息,如服务器响应时间、通信量、本地系统状态,从而使7190可以立即拟定每个数据中心的状态,并将访问导向最佳站点。IDC机房的负载均衡服务大部分的个人网站在一开始或许只是跟几十人上百人共享的一个虚拟主机空间,然后随着内容的增长和访问量的增长,虚拟主机的带宽、空间已经不能满足需求,站长就得开始考虑为网站购置一台独立的服务器,使用100M共享甚至是10M独享带宽;而当网站继续发展,访问的用户也已经遍布大江南北,站长又得考虑电信网通的互通问题,在南方和北方各放置一台服务器作为镜像站点,或是采用双线接入;当这个网站访问量更大时,一味的增长带宽和设立镜像站点无疑会使网站运营成本剧增,加上单个服务器自身也有性能和线程的瓶颈,在并发访问量较大并且集中在一台服务器的时候,“Servertoobusy”就出现了,而这时站长应当采用什么方式使得网站在高访问量的时候仍然拥有较好的访问效果呢?这就牵涉到负载均衡的话题。我们之前讨论过CDN,其实CDN除了加速之外,也具有分流的效果,因此在负载均衡领域也有不少应用,其实基本上缓存(Cache)+镜像技术都有分流作用,但是如何分流还是需要一个负载均衡设备进行引导,所以,我们今天专门讨论负载均衡技术。关于负载均衡服务负载均衡服务可以平衡服务器群中的所有的服务器和应用之间的通信负载,根据实时响应时间进行判断,将任务交由负载最轻的服务器来解决,以实现真正的智能通信管理和最佳的服务器群性能。负载均衡技术控制第四层到第七层的应用/内容,从而对不同类型的客户和应用实现了优先级划分和差别服务,使用第七层智能会话恢复技术,同时可以检测出HTTP400,500和600系列的错误。它透明地将交易重新定向到另一台服务器,从而使系统可以完毕该交易。服务器故障切换和多重冗余特性可以让通信绕过故障点,从而使网站始终保持运营和可访问性。实现负载均衡的方法关于实现负载均衡的方法,网上也有不少相关讨论,以下做一些引用:1、基于特定服务器软件的负载均衡很多网络协议都支持“重定向”功能,例如在HTTP协议中支持Location指令,接受到这个指令的浏览器将自动重定向到Location指明的另一个URL上。由于发送Location指令比起执行服务请求,对Web服务器的负载要小的多,因此可以根据这个功能来设计一种负载均衡的服务器。

任何时候Web服务器认为自己负载较大的时候,它就不再直接发送回浏览器请求的网页,而是送回一个Location指令,让浏览器去服务器集群中的其他服务器上获得所需要的网页。在这种方式下,服务器自身必须支持这种功能,然而具体实现起来却有很多困难,例如一台服务器如何能保证它重定向过的服务器是比较空闲的,并且不会再次发送Location指令,Location指令和浏览器都没有这方面的支持能力,这样很容易在浏览器上形成一种死循环。因此这种方式实际应用当中并不多见,使用这种方式实现的服务器集群软件也较少。有些特定情况下可以使用CGI(涉及使用FastCGI或mod_perl扩展来改善性能)来模拟这种方式去分担负载,而Web服务器仍然保持简洁、高效的特性,此时避免Location循环的任务将由用户的CGI程序来承担。2、基于DNS的负载均衡由于基于服务器软件的负载均衡需要改动软件,因此经常是得不偿失,负载均衡最佳是在服务器软件之外来完毕,这样才干运用现有服务器软件的种种优势。最早的负载均衡技术是通过DNS服务中的随机名字解析来实现的,在DNS服务器中,可认为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中的一个地址。因此,对于同一个名字,不同的客户机会得到不同的地址,他们也就访问不同地址上的Web服务器,从而达成负载均衡的目的。例如假如希望使用三个Web服务器来回应对.net的HTTP请求,就可以设立该域的DNS服务器中关于该域的数据涉及有与下面例子类似的结果:www1INAwww2INAwww3INAwwwINCNAMEwww1wwwINCNAMEwww2wwwINCNAMEwww3此后外部的客户机就也许随机的得到相应www的不同地址,那么随后的HTTP请求也就发送给不同地址了。DNS负载均衡的优点是简朴、易行,并且服务器可以位于互联网的任意位置上,当前使用在涉及Yahoo在内的Web站点上。然而它也存在不少缺陷,一个缺陷是为了保证DNS数据及时更新,一般都要将DNS的刷新时间设立的较小,但太小就会导致太大的额外网络流量,并且更改了DNS数据之后也不能立即生效;第二点是DNS负载均衡无法得知服务器之间的差异,它不能做到为性能较好的服务器多分派请求,也不能了解到服务器的当前状态,甚至会出现客户请求集中在某一台服务器上的偶尔情况。3、反向代理负载均衡

使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提高静态网页的访问速度。因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多台内部Web服务器之一上,从而达成负载均衡的目的。这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。实现这个反向代理能力并不能算是一个特别复杂的任务,但是在负载均衡中规定特别高的效率,这样实现起来就不是十分简朴的了。每针对一次代理,代理服务器就必须打开两个连接,一个为对外的连接,一个为对内的连接,因此对于连接请求数量非常大的时候,代理服务器的负载也就非常之大了,在最后反向代理服务器会成为服务的瓶颈。例如,使用Apache的mod_rproxy模块来实现负载均衡功能时,提供的并发连接数量受Apache自身的并发连接数量的限制。一般来讲,可以使用它来对连接数量不是特别大,但每次连接都需要消耗大量解决资源的站点进行负载均衡,例如搜寻。使用反向代理的好处是,可以将负载均衡和代理服务器的高速缓存技术结合在一起,提供有益的性能,具有额外的安全性,外部客户不能直接访问真实的服务器。并且实现起来可以实现较好的负载均衡策略,将负载可以非常均衡的分给内部服务器,不会出现负载集中到某个服务器的偶尔现象。4、基于NAT的负载均衡技术

网络地址转换为在内部地址和外部地址之间进行转换,以便具有内部地址的计算机能访问外部网络,而当外部网络中的计算机访问地址转换网关拥有的某一外部地址时,地址转换网关能将其转发到一个映射的内部地址上。因此假如地址转换网关能将每个连接均匀转换为不同的内部服务器地址,此后外部网络中的计算机就各自与自己转换得到的地址上服务器进行通信,从而达成负载分担的目的。地址转换可以通过软件方式来实现,也可以通过硬件方式来实现。使用硬件方式进行操作一般称为互换,而当互换必须保存TCP连接信息的时候,这种针对OSI网络层的操作就被称为第四层互换。支持负载均衡的网络地址转换为第四层互换机的一种重要功能,由于它基于定制的硬件芯片,因此其性能非常优秀,很多互换机声称具有400MB-800MB的第四层互换能力。使用软件方式来实现基于网络地址转换的负载均衡则要实际的多,除了一些厂商提供的解决方法之外,更有效的方法是使用免费的自由软件来完毕这项任务。其中涉及LinuxVirtualServerProject中的NAT实现方式,或者本文作者在FreeBSD下对natd的修订版本。一般来讲,使用这种软件方式来实现地址转换,中心负载均衡器存在带宽限制,在100MB的快速以太网条件下,能得到最快达80MB的带宽,然而在实际应用中,也许只有40MB-60MB的可用带宽。IDC提供的负载均衡服务IDC提供的负载均衡服务有:大类小类本地负载均衡

(ServerLoadBalancing)共享负载均衡

(SharedLoadBalancingService)独享负载均衡服务

(DedicatedLoadBalancingService)异地负载均衡服务

(WebsiteLoadBalancingService)异地负载均衡服务

(WebsiteLoadBalancingService)

互联网数据中心提供的专业负载均衡服务,可以针对用户的服务器做本地负载均衡(ServerLoadBalancing),负载均衡设备采用强劲有效的负载均衡算法,按照实际响应时间,在性能不同的服务器之间进行负载的智能分派,充足运用服务器群中的每一台服务器,保护现有投资,既保证性能一般的服务器不成为系统的瓶颈,也保证性能高的服务器资源得到充足的运用。大部分的电信IDC互联网数据中心都建立了共享的负载均衡设施(SharedLoadBalancing),该机房的购买此项增值服务的所有托管客户的服务器都可以共享机房购置的负载均衡设施,针对一些高端用户,一些数据中心还推出了独享负载均衡服务(DedicatedLoadBalancingService),该服务重要是为了避免共享用户争用负载均衡设备资源的也许,并且会为个别大型客户单独建立自己的负载均衡设施,以保证达成良好的效果。共享负载均衡服务(SharedLoadBalancingService)托管客户可以与其它客户共同分享IDC的共享负载均衡设施(SharedLoadBalancing),以低廉的代价,获得服务器的负载均衡服务。独享负载均衡服务(DedicatedLoadBalancingService)IDC也可认为托管客户提供独享的负载均衡设施,在保证数据安全的情况下,达成更好的负载均衡效果。但是,只对本地服务器(也就是指本机房服务器)进行负载均衡是不够的,大部分需要负载均衡服务的站点并发访问量都较大,这些站点多数都有异地镜像服务器,因此一些更加专业的IDC机房采用的负载均衡设备还可以穿透网络路由,进行异地镜像站点之间的负载均衡,这类负载均衡就称为异地负载均衡(WebsiteLoadBalancing)。异地负载均衡服务(WebsiteLoadBalancingService)IDC的负载均衡服务,可以穿透网络路由,进行异地镜像站点之间的负载均衡。负载均衡服务的更多服务对象:负载均衡服务并非只针对托管服务器或者独立服务器,上面提到的几种也负载均衡服务可以对用户的防火墙(FirewallLoadBalancing)及虚拟主机(VirtualHostingLoadBalancing)进行负载均衡,其效果和基本原理也是通用的。Linux集群之负载平衡原理和实现算法在计算机硬件价格下降、计算机网络拓扑发展的情况下,分布式计算机系统给用户提供了一个丰富的资源集合。人们在研究分布式系统时,就注意到了这样一个问题:在一个由网络连接起来的多计算机环境中,在某一时刻,一些计算机的负载比较重,而此外一些计算机的负载却比较轻。平衡各计算机之间的负载是任务分派与调度的一个重要目的,它可以提高整个系统的性能。为了改善系统的性能,通过在多台计算机之间合理地分派负载,使各台计算机的负载基本均衡,这种计算能力共享的形式,通常被称为负载平衡或负载共享。一般来说,"负载平衡"要达成的目的是使各台计算机之间的负载基本均衡,而"负载共享"意味着只是简朴的负载的重新分派。负载平衡涉及两种,一种是静态负载平衡,一种是动态负载平衡。只是运用系统负载的平均信息,而忽视系统当前的负载状况的方法被称为静态负载平衡。根据系统当前的负载状况来调整任务划分的方法被称为动态负载平衡。导致负载不平衡重要是由于:某些算法的迭代大小不是固定的,但迭代的大小在编译时却可以被求得;某些算法的迭代大小不是固定的,并且迭代的大小依赖于被解决的数据,在编译时无法求得;即使迭代大小是固定的,也会有许多不定因素导致计算速度的差异。考察这三个因素,对第一种情况可在编译时估计各迭代的工作量,按照解决节点的解决能力分布迭代,这就是静态负载平衡的方法。对第二、三种情况来说,必须采用动态负载平衡的手段,在运营过程中根据各个解决节点完毕任务的情况,动态地迁移任务,实现动态负载平衡。进行动态负载平衡需要考察解决节点的解决能力,它的基本依据是根据解决节点先前的解决速度预见未来的解决速度。负载平衡算法

一个负载平衡算法都包含以下三个组成部分:信息策略:制定任务放置策略的制定者使用的负载和任务量,以及信息分派的方式。传送策略:基于任务和计算机负载,判断是否要把一个任务传送到其它计算机上解决。放置策略:对于适合传送到其它计算机解决的任务,选择任务将被传送的目的计算机。负载平衡的上述三个部分之间是以不同的方式互相作用的。放置策略运用信息策略提供的负载信息,仅当任务被传送策略判断为适于传送之后才行动。总之,负载平衡的目的是:提供最短的平均任务响应时间;能适于变化的负载;是可靠的负载平衡机制。信息策略

人们用来描述负载信息采用的参数有:运营队列中的任务数;系统调用的速率;CPU上下文切换率;空闲CPU时间比例;空闲存储器的大小(K字节);1分钟内的平均负载。对于这些单个的负载描述参数,第(1)个,即采用运营队列中的任务数作为描述负载的参数被证明是最有效的,即它的平均任务响应时间最短,并且已经得到广泛应用。但是,假如为了使系统信息更全面而采集了更多的参数,则往往由于增长了额外开销,却得不到所希望的性能改善。例如,采用将六个参数中的某两个进行"AND"或"OR"组合,得到的平均响应时间反而比单个参数的平均响应时间还要差一些。传送策略

为了简朴起见,在选用传送策略时,多选用阀值策略。例如,Eager等人的方法是:在判断是否要在本地解决一个任务时,无需互换计算机之间的状态信息,一旦服务队列或等待服务队列的长度大于阀值时,就传送这个任务,并且传送的是刚刚接受的任务。而进程迁移可以迁移正在执行的任务,是对这种只能传送刚刚接受的任务的一种改善。Zhou在模拟研究七个负载平衡算法时,其传送策略都采用阀值策略。它的阀值策略基于两个阀值∶计算机的负载阀值Load和任务执行时间阀值TCPU。假如计算机的负载超过Load并且任务的执行时间超过TCPU时,就把此任务传送到其它计算机执行。放置策略

通过总结,共有以下四种放置策略。集中策略。每隔P秒,其中一个计算机被指定为"负载信息中心"(LIC),接受所有其它负载的变更值,并把它们汇集到一个"负载向量"中,然后把负载向量广播给所有其它的计算机。当一台计算机认为一个任务适于传送到其它计算机上执行时,它就给LIC发送一个请求,并告知当前负载的值。LIC选一台具有最短运营队列长度的计算机,并且告知任务所在的计算机把任务发送给它,同时,它把目的主机负载值增长1。阀值策略。随机选择一台计算机,判断若把任务传送到那台计算机后,那台计算机的任务队列长度是否会超过阀值。假如不超过阀值,就传送此任务;否则,随机选择另一台计算机,并以同样方式判断,继续这样做直到找到一台合适的目的计算机,或探测次数超过一个静态值限制LP,当任务真正到达计算机以后,不管状态如何,必须解决该任务。最短任务队列策略。随机选择LP台不同的计算机,察看每台计算机的任务队列长度,任务被传送到具有最短任务队列长度的计算机。当任务真正到达计算机,无论状态如何,目的计算机必须解决该任务。对此策略的一个简朴改善时,无论何时,碰到一台队列长度为0的计算机时,不再继续探测,由于可以拟定此计算机是一台可以接受的目的计算机。保存策略。当一个任务从一台计算机离开时,该计算机检查本地负载,假如负载小于阀值T1,就探测其它计算机,并在R个负载大于T1的计算机中登记该计算机的名字,并把登记的内容保存到一个栈中。当一个任务到达一台超载的计算机时,就把这个任务传送到此台计算机栈顶的计算机上。假如一个计算机的负载低于T1,就清空栈里保存的所有计算机名。Zhou的论文中,比较了(2)和(3)三种策略,结论是:以简朴(计算不昂贵)的方式,运用少量状态信息,第(2)中方法往往获得比第(3)种方法更好的效果。第(3)中方法比较复杂,它必须用性能的改善来补偿额外花费,所以取得的效果会稍差一些[2]。算法实现

目前,常见的算法有:中心任务调度策略、梯度模型策略、发送者启动策略和接受者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论