|络的各个核?j)部分随着业务量的提高、访问量和数据流量的快速增长,其处理能力和计算强度也相应增大,使得单一讑֤Ҏ(gu)无法承担。在此情况下Q如果扔掉现有设备去做大量的g升Q这样将造成现有资源的浪费,而且如果再面临下一ơ业务量的提升,q又导致再一ơ硬件升U的高额成本投入Q甚x能再卓的讑֤也不能满_前业务量的需求。于是,负蝲均衡机制应运而生?/p>
负蝲均衡QLoad BalanceQ徏立在现有|络l构之上Q它提供?jin)一U廉h效透明的方法扩展网l设备和服务器的带宽、增加吞吐量、加强网l数据处理能力、提高网l的灉|性和可用性?/p>
负蝲均衡有两斚w的含义:(x)首先Q大量的q发讉K或数据流量分担到多台节点讑֤上分别处理,减少用户{待响应的时_(d)其次Q单个重负蝲的运分担到多台节点讑֤上做q行处理Q每个节点设备处理结束后Q将l果汇总,q回l用Ppȝ处理能力得到大幅度提高?/p>
本文所要介l的负蝲均衡技术主要是指在均衡服务器群中所有服务器和应用程序之间流量负载的应用Q目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键d服务器上的Internet服务器程序的可用性和可~性?
负蝲均衡技术分c?
目前有许多不同的负蝲均衡技术用以满不同的应用需求,下面从负载均衡所采用的设备对象、应用的|络层次Q指OSI参考模型)(j)?qing)应用的地理l构{来分类?/p>
?g负蝲均衡
软g负蝲均衡解决Ҏ(gu)是指在一台或多台服务器相应的操作pȝ上安装一个或多个附加软g来实现负载均衡,如DNS Load BalanceQCheckPoint Firewall-1 ConnectControl{,它的优点是基于特定环境,配置单,使用灉|Q成本低廉,可以满一般的负蝲均衡需求?/p>
软g解决Ҏ(gu)~点也较多,因ؓ(f)每台服务器上安装额外的Y件运行会(x)消耗系l不定量的资源,是功能强大的模块,消耗得多Q所以当q接h特别大的时候,软g本n?x)成为服务器工作成|的一个关键;软g可扩展性ƈ不是很好Q受到操作系l的限制Q由于操作系l本w的BugQ往往?x)引起安全问题?/p>
g负蝲均衡解决Ҏ(gu)是直接在服务器和外部|络间安装负载均衡设备,q种讑֤我们通常UC载均衡器Q由于专门的讑֤完成专门的Q务,独立于操作系l,整体性能得到大量提高Q加上多样化的负载均衡策略,化的量理Q可辑ֈ最佳的负蝲均衡需求?/p>
负蝲均衡器有多种多样的Ş式,除了(jin)作ؓ(f)独立意义上的负蝲均衡器外Q有些负载均衡器集成在交换设备中Q置于服务器与Internet链接之间Q有些则以两块网l适配器将q一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网l上?/p>
一般而言Q硬件负载均衡在功能、性能上优于Y件方式,不过成本昂贵?
本地/全局负蝲均衡
负蝲均衡从其应用的地理结构上分ؓ(f)本地负蝲均衡(Local Load Balance)和全局负蝲均衡(Global Load BalanceQ也叫地域负载均?Q本地负载均衡是指对本地的服务器做负蝲均衡Q全局负蝲均衡是指对分别放|在不同的地理位|、有不同|络l构的服务器间作负载均衡?/p>
本地负蝲均衡能有效地解决数据量q大、网l负药重的问题Qƈ且不需p昂贵开支购|性能卓越的服务器Q充分利用现有设备,避免服务器单Ҏ(gu)障造成数据量的损失。其有灵zdL(fng)均衡{略把数据流量合理地分配l服务器内的服务器共同负担。即使是再给现有服务器扩充升U,也只是简单地增加一个新的服务器到服务群中,而不需改变现有|络l构、停止现有的服务?/p>
全局负蝲均衡主要用于在一个多区域拥有自己服务器的站点Qؓ(f)?jin)全球用户只以一个IP地址或域名就能访问到自己最q的服务器,从而获得最快的讉K速度Q也可用于子公司分散站点分布q的大公叔R过IntranetQ企业内部互联网Q来辑ֈ资源l一合理分配的目的?/p>
全局负蝲均衡有以下的特点Q?
实现地理位置无关性,能够q距Mؓ(f)用户提供完全的透明服务?
除了(jin)能避免服务器、数据中?j)等的单点失效,也能避免׃ISP专线故障引v的单点失效?
解决|络拥塞问题Q提高服务器响应速度Q服务就q提供,辑ֈ更好的访问质量?
|络层次上的负蝲均衡
针对|络上负载过重的不同瓉所在,从网l的不同层次入手Q我们可以采用相应的负蝲均衡技术来解决现有问题?/p>
随着带宽增加Q数据流量不断增大,|络核心(j)部分的数据接口将面(f)瓉问题Q原有的单一U\很难满需求,而且U\的升U又q于昂贵甚至难以实现Q这时就可以考虑采用链\聚合QTrunkingQ技术?/p>
链\聚合技术(W二层负载均衡)(j)多条物理链路当作一条单一的聚合逻辑链\使用Q网l数据流量由聚合逻辑链\中所有物理链路共同承担,由此在逻辑上增大了(jin)链\的容量,使其能满_宽增加的需求?/p>
C负蝲均衡技术通常操作于网l的W四层或W七层。第四层负蝲均衡一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址Q对每次TCPq接h动态用其中一个内部IP地址Q达到负载均衡的目的。在W四层交换机中,此种均衡技术得到广泛的应用Q一个目标地址是服务器VIPQ虚拟IPQVirtual IP addressQ连接请求的数据包流l交换机Q交换机Ҏ(gu)源端和目的IP地址、TCP或UDP端口号和一定的负蝲均衡{略Q在服务器IP和VIP间进行映,选取服务器群中最好的服务器来处理q接h?/p>
W七层负载均衡控制应用层服务的内容,提供?jin)一U对讉K量的高层控制方式,适合对HTTP服务器群的应用。第七层负蝲均衡技术通过(g)查流l的HTTP报头Q根据报头内的信息来执行负蝲均衡d?/p>
W七层负载均衡优点表现在如下几个斚wQ?
通过对HTTP报头的检查,可以(g)出HTTP400?00?00pd的错误信息,因而能透明地将q接h重新定向到另一台服务器Q避免应用层故障?
可根据流l的数据cdQ如判断数据包是囑փ文g、压~文件或多媒体文件格式等Q,把数据流量引向相应内容的服务器来处理Q增加系l性能?
能根据连接请求的cdQ如是普通文本、图象等静态文档请求,q是asp、cgi{的动态文档请求,把相应的h引向相应的服务器来处理,提高pȝ的性能?qing)安全性?
W七层负载均衡受到其所支持的协议限Ӟ一般只有HTTPQ,q样限制了(jin)它应用的q泛性,q且(g)查HTTP报头?x)占用大量的pȝ资源Q势必会(x)影响到系l的性能Q在大量q接h的情况下Q负载均衡设备自w容易成为网l整体性能的瓶颈?/p>
负蝲均衡{略
在实际应用中Q我们可能不想仅仅是把客L(fng)的服务请求^均地分配l内部服务器Q而不服务器是否宕机。而是想Pentium III服务器比Pentium II能接受更多的服务hQ一台处理服务请求较?yu)的服务器能分配到更多的服务hQ出现故障的服务器将不再接受服务h直至故障恢复{等?/p>
选择合适的负蝲均衡{略Q多个讑֤能很好的共同完成dQ消除或避免现有|络负蝲分布不均、数据流量拥挤反应时间长的瓶颈。在各负载均衡方式中Q针对不同的应用需求,在OSI参考模型的W二、三、四、七层的负蝲均衡都有相应的负载均衡策略?
负蝲均衡{略的优劣及(qing)其实现的难易E度有两个关键因素:(x)一、负载均衡算法,二、对|络pȝ状况的检方式和能力?/p>
考虑到服务请求的不同cd、服务器的不同处理能力以?qing)随机选择造成的负载分配不均匀{问题,Z(jin)更加合理的把负蝲分配l内部的多个服务器,需要应用相应的能够正确反映各个服务器处理能力及(qing)|络状态的负蝲均衡法Q?/p>
轮@均衡QRound RobinQ:(x)每一ơ来自网l的h轮流分配l内部中的服务器Q从1至N然后重新开始。此U均衡算法适合于服务器l中的所有服务器都有相同的Yg配置q且q_服务h相对均衡的情c(din)?
权重轮@均衡QWeighted Round RobinQ:(x)Ҏ(gu)服务器的不同处理能力Q给每个服务器分配不同的权|使其能够接受相应权值数的服务请求。例如:(x)服务器A的权D设计?QB的权值是3QC的权值是6Q则服务器A、B、C分别接受到10%?0Q?0Q的服务h。此U均衡算法能保高性能的服务器得到更多的用率Q避免低性能的服务器负蝲q重?
随机均衡QRandomQ:(x)把来自网l的h随机分配l内部中的多个服务器?
权重随机均衡QWeighted RandomQ:(x)此种均衡法cM于权重轮循算法,不过在处理请求分担时是个随机选择的过E?
响应速度均衡QResponse TimeQ:(x)负蝲均衡讑֤对内部各服务器发Z个探请求(例如PingQ,然后Ҏ(gu)内部中各服务器对探测h的最快响应时间来军_哪一台服务器来响应客L(fng)的服务请求。此U均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负蝲均衡讑֤与服务器间的最快响应时_(d)而不是客L(fng)与服务器间的最快响应时间?/p>
最连接数均衡QLeast ConnectionQ:(x)客户端的每一ơ请求服务在服务器停留的旉可能?x)有较大的差异,随着工作旉加长Q如果采用简单的轮@或随机均衡算法,每一台服务器上的q接q程可能?x)生极大的不同Qƈ没有辑ֈ真正的负载均衡。最连接数均衡法对内部中需负蝲的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务q接hӞ把当前h分配l连接数最的服务器,使均衡更加符合实际情况,负蝲更加均衡。此U均衡算法适合长时处理的请求服务,如FTP?/p>
处理能力均衡Q此U均衡算法将把服务请求分配给内部中处理负PҎ(gu)服务器CPU型号、CPU数量、内存大及(qing)当前q接数等换算而成Q最ȝ服务器,׃考虑C(jin)内部服务器的处理能力?qing)当前网l运行状况,所以此U均衡算法相Ҏ(gu)说更加精,其适合q用到第七层Q应用层Q负载均衡的情况下?
DNS响应均衡QF(tun)lash DNSQ:(x)在Internet上,无论是HTTP、FTP或是其它的服务请求,客户端一般都是通过域名解析来找到服务器切的IP地址的。在此均衡算法下Q分处在不同地理位置的负载均衡设备收到同一个客L(fng)的域名解析请求,q在同一旉内把此域名解析成各自相对应服务器的IP地址Q即与此负蝲均衡讑֤在同一位地理位|的服务器的IP地址Qƈq回l客L(fng)Q则客户端将以最先收到的域名解析IP地址来l请求服务,而忽略其它的IP地址响应。在U均衡策略适合应用在全局负蝲均衡的情况下Q对本地负蝲均衡是没有意义的?
管有多U的负蝲均衡法可以较好的把数据量分配l服务器去负载,但如果负载均衡策略没有对|络pȝ状况的检方式和能力Q一旦在某台服务器或某段负蝲均衡讑֤与服务器|络间出现故障的情况下,负蝲均衡讑֤依然把一部分数据量引向那台服务器,q势必造成大量的服务请求被丢失Q达不到不间断可用性的要求。所以良好的负蝲均衡{略应有对网l故障、服务器pȝ故障、应用服务故障的(g)方式和能力Q?/p>
Ping侦测Q通过ping的方式检服务器?qing)网l系l状况,此种方式单快速,但只能大致检出|络?qing)服务器上的操作pȝ是否正常Q对服务器上的应用服务检就无能为力?jin)?
TCP Open侦测Q每个服务都?x)开放某个通过TCPq接Q检服务器上某个TCP端口Q如Telnet?3口,HTTP?0口等Q是否开放来判断服务是否正常?
HTTP URL侦测Q比如向HTTP服务器发Z个对main.html文g的访问请求,如果收到错误信息Q则认ؓ(f)服务器出现故障?
负蝲均衡{略的优劣除受上面所讲的两个因素影响外,在有些应用情况下Q我们需要将来自同一客户端的所有请求都分配l同一台服务器去负担,例如服务器将客户端注册、购物等服务h信息保存的本地数据库的情况下Q把客户端的子请求分配给同一台服务器来处理就昄臛_重要?jin)。有两种方式可以解决此问题,一是根据IP地址把来自同一客户端的多次h分配l同一台服务器处理Q客L(fng)IP地址与服务器的对应信息是保存在负载均衡设备上的;二是在客L(fng)览器cookie内做独一无二的标识来把多ơ请求分配给同一台服务器处理Q适合通过代理服务器上|的客户端?/p>
q有一U\径外q回模式QOut of Path ReturnQ,当客L(fng)q接h发送给负蝲均衡讑֤的时候,中心(j)负蝲均衡讑֤请求引向某个服务器Q服务器的回应请求不再返回给中心(j)负蝲均衡讑֤Q即l过量分配器,直接q回l客L(fng)Q因此中?j)负载均衡设备只负责接受q{发请求,其网l负担就减少?jin)很多,q且l客L(fng)提供?jin)更快的响应旉。此U模式一般用于HTTP服务器群Q在各服务器上要安装一块虚拟网l适配器,q将其IP地址设ؓ(f)服务器群的VIPQ这h能在服务器直接回应客L(fng)h旉利的达成三次握手?br />
负蝲均衡实施要素
负蝲均衡Ҏ(gu)应是在网站徏讑ֈ期就应考虑的问题,不过有时随着讉K量的爆炸性增长,出决策者的意料Q这也就成ؓ(f)不得不面对的问题。当我们在引入某U负载均衡方案乃臛_体实施时Q像其他的许多方案一P首先是确定当前及(qing)来的应用需求,然后在代价与收效之间做出权衡?br />
针对当前?qing)将来的应用需求,分析|络瓉的不同所在,我们需要确立是采用哪一cȝ负蝲均衡技术,采用什么样的均衡策略,在可用性、兼Ҏ(gu)、安全性等{方面要满多大的需求,如此{等?br />
不管负蝲均衡Ҏ(gu)是采用花费较?yu)的软g方式Q还是购C价高昂在性能功能上更强的W四层交换机、负载均衡器{硬件方式来实现Q亦或其他种cM同的均衡技术,下面q几w是我们在引入均衡Ҏ(gu)时可能要考虑的问题:(x)
性能Q性能是我们在引入均衡Ҏ(gu)旉要重点考虑的问题,但也是一个最难把握的问题。衡量性能时可每U钟通过|络的数据包数目做ؓ(f)一个参敎ͼ另一个参数是均衡Ҏ(gu)中服务器所能处理的最大ƈ发连接数目,但是Q假设一个均衡系l能处理百万计的q发q接敎ͼ可是却只能以每秒2个包的速率转发Q这昄是没有Q何作用的?性能的优劣与负蝲均衡讑֤的处理能力、采用的均衡{略息息相关Qƈ且有两点需要注意:(x)一、均衡方案对服务器群整体的性能Q这是响应客L(fng)q接h速度的关键;二、负载均衡设备自w的性能Q避免有大量q接h时自w性能不而成为服务瓶颈?有时我们也可以考虑采用混合型负载均衡策略来提升服务器群的M性能Q如DNS负蝲均衡与NAT负蝲均衡相结合。另外,针对有大量静态文档请求的站点Q也可以考虑采用高速缓存技术,相对来说更节省费用,更能提高响应性能Q对有大量ssl/xml内容传输的站点,更应考虑采用ssl/xml加速技术?
可扩展性:(x)IT技术日新月异,一q以前最新的产品Q现在或许已是网l中性能最低的产品Q业务量的急速上升,一q前的网l,现在需要新一轮的扩展。合适的均衡解决Ҏ(gu)应能满q些需求,能均衡不同操作系l和gq_之间的负载,能均衡HTTP、邮件、新闅R代理、数据库、防火墙?Cache{不同服务器的负载,q且能以对客L(fng)完全透明的方式动态增加或删除某些资源?
灉|性:(x)均衡解决Ҏ(gu)应能灉|地提供不同的应用需求,满应用需求的不断变化。在不同的服务器有不同的应用需求时Q应有多L(fng)均衡{略提供更广泛的选择?
可靠性:(x)在对服务质量要求较高的站点,负蝲均衡解决Ҏ(gu)应能为服务器提供完全的定w性和高可用性。但在负载均衡设备自w出现故障时Q应该有良好的冗余解x案,提高可靠性。用冗余时Q处于同一个冗余单元的多个负蝲均衡讑֤必须h有效的方式以便互相进行监控,保护pȝ可能地避免遭受到重大故障的损失?
易管理性:(x)不管是通过软gq是g方式的均衡解x案,我们都希望它有灵zR直观和安全的管理方式,q样便于安装、配|、维护和监控Q提高工作效率,避免差错。在g负蝲均衡讑֤上,目前主要有三U管理方式可供选择Q一、命令行接口QCLIQCommand Line InterfaceQ,可通过l端q接负蝲均衡讑֤串行接口来管理,也能telnetq程d理Q在初始化配|时Q往往要用到前者;二、图形用h口(GUIQGraphical User InterfacesQ,有基于普通web늚理Q也有通过Java Applet q行安全理Q一般都需要管理端安装有某个版本的览器;三、SNMPQSimple Network Management ProtocolQ简单网l管理协议)(j)支持Q通过W三方网l管理Y件对W合SNMP标准的设备进行管理?br />
负蝲均衡配置实例
DNS负蝲均衡
DNS负蝲均衡技术是在DNS服务器中为同一个主机名配置多个IP地址Q在应答DNS查询ӞDNS服务器对每个查询以DNS文g中主录的IP地址按顺序返回不同的解析l果Q将客户端的讉K引导C同的机器上去Q得不同的客户端访问不同的服务器,从而达到负载均衡的目的?br />
DNS负蝲均衡的优Ҏ(gu)l济单易行,q且服务器可以位于internet上Q意的位置。但它也存在不少~点Q?
Z(jin)使本DNS服务器和其他DNS服务器及(qing)时交互,保证DNS数据?qing)时更新Q地址能随机分配,一般都要将DNS的刷新时间设|的较小Q但太小会(x)使DNS量大增造成额外的网l问题?
一旦某个服务器出现故障Q即使及(qing)时修改了(jin)DNS讄Q还是要{待_的时_(d)h旉Q才能发挥作用,在此期间Q保存了(jin)故障服务器地址的客戯机不能正常访问服务器?
DNS负蝲均衡采用的是单的轮@负蝲法Q不能区分服务器的差异,不能反映服务器的当前q行状态,不能做到为性能较好的服务器多分配请求,甚至?x)出现客戯求集中在某一台服务器上的情况?
要给每台服务器分配一个internet上的IP地址Q这势必?x)占用过多的IP地址?
判断一个站Ҏ(gu)否采用了(jin)DNS负蝲均衡的最单方式就是连l的pingq个域名Q如果多ơ解析返回的IP地址不相同的话,那么q个站点很可能采用的就是较为普遍的DNS负蝲均衡。但也不一定,因ؓ(f)如果采用的是DNS响应均衡Q多ơ解析返回的IP地址也可能会(x)不相同。不妨试试Ping一下www.yesky.comQwww.sohu.comQwww.yahoo.com
现假设有三台服务器来应对www.test.com的请求。在采用BIND 8.x DNS服务器的unixpȝ上实现v来比较简单,只需在该域的数据记录中添加类g面的l果Q?
www1 IN A 192.1.1.1
www2 IN A 192.1.1.2
www3 IN A 192.1.1.3
www IN CNAME www1
www IN CNAME www2
www IN CNAME www3
在NT下的实现也很单,下面详细介绍在win2000 server下实现DNS负蝲均衡的过E,NT4.0cMQ?br />
打开“理工具”下的“DNS”Q进入DNS服务配置控制台?
打开相应DNS 服务器的“属?#8221;Q在“高”选项卡的“服务器选项”中,选中“启用循环”复选框。此步相当于在注册表记录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters中添加一个双字节制|dword|(j)RoundRobinQgؓ(f)1?
打开正向搜烦(ch)区域的相应区域(如test.comQ,新徏LdL (A) 资源记录Q记录如下:(x)
www IN A 192.1.1.1
www IN A 192.1.1.2
www IN A 192.1.1.3
在这里可以看到的区别是在NT下一个主机名对应多个IP地址记录Q但在unix下,是先d多个不同的主机名分别对应个自的IP地址Q然后再把这些主同一个别名(CNAMEQ来实现的?
在此需要注意的是,NT下本地子|优先?x)取代多宿主名称的@环复用,所以在试Ӟ如果做测试用的客hIP地址与主源记录的IP在同一有类掩码范围内,需要清除在“高”选项?#8220;服务器选项”中的“启用netmask排序”?
NAT负蝲均衡
NATQNetwork Address Translation |络地址转换Q简单地说就是将一个IP地址转换为另一个IP地址Q一般用于未l注册的内部地址与合法的、已h册的Internet IP地址间进行{换。适用于解决Internet IP地址紧张、不惌|络外部知道内部|络l构{的场合下。每ơNAT转换势必?x)增加NAT讑֤的开销Q但q种额外的开销对于大多数网l来说都是微不道的Q除非在高带宽有大量NATh的网l上?br />
NAT负蝲均衡一个外部IP地址映射为多个内部IP地址Q对每次q接h动态地转换Z个内部服务器的地址Q将外部q接h引到转换得到地址的那个服务器上,从而达到负载均衡的目的?br />
NAT负蝲均衡是一U比较完善的负蝲均衡技术,L(fng)NAT负蝲均衡功能的设备一般处于内部服务器到外部网间的|关位置Q如路由器、防火墙、四层交换机、专用负载均衡器{,均衡法也较灉|Q如随机选择、最连接数?qing)响应时间等来分配负载?
NAT负蝲均衡可以通过软硬件方式来实现。通过软g方式来实现NAT负蝲均衡的设备往往受到带宽?qing)系l本w处理能力的限制Q由于NAT比较接近|络的低层,因此可以将它集成在g讑֤中,通常q样的硬件设备是W四层交换机和专用负载均衡器Q第四层交换机的一w要功能就是NAT负蝲均衡?
下面以实例介l一下Cisco路由器NAT负蝲均衡的配|:(x)
现有一台有一个串行接口和一个Ethernet接口的\由器QEthernet口连接到内部|络Q内部网l上有三台web服务器,但都只是低端配置Qؓ(f)?jin)处理好来自Internet上大量的webq接hQ因此需要在此\由器上做NAT负蝲均衡配置Q把发送到web服务器合法Internet IP地址的报文{换成q三台服务器的内部本地地址?其具体配|过E如下:(x)
做好路由器的基本配置Qƈ定义各个接口在做NAT时是内部q是外部接口?
然后定义一个标准访问列表(standard access listQ,用来标识要{换的合法IP地址?
再定义NAT地址池来标识内部web服务器的本地地址Q注意要用到关键字rotaryQ表明我们要使用轮@QRound RobinQ的方式从NAT地址池中取出相应IP地址来{换合法IP报文?
最后,把目标地址问表中IP的报文{换成地址池中定义的IP地址?
相应配置文g如下Q?br />
interface Ethernet0/0
ip address 192.168.1.4 255.255.255.248
ip nat inside
!
interface Serial0/0
ip address 200.200.1.1 255.255.255.248
ip nat outside
!
ip access-list 1 permit 200.200.1.2
!
ip nat pool websrv 192.168.1.1 192.168.1.3 netmask 255.255.255.248 type rotary
ip nat inside destination list 1 pool websrv
反向代理负蝲均衡
普通代理方式是代理内部|络用户讉Kinternet上服务器的连接请求,客户端必L定代理服务器,q将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理?br />
反向代理QReverse ProxyQ方式是指以代理服务器来接受internet上的q接hQ然后将h转发l内部网l上的服务器Qƈ从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现Z个服务器?br />
反向代理负蝲均衡技术是把将来自internet上的q接h以反向代理的方式动态地转发l内部网l上的多台服务器q行处理Q从而达到负载均衡的目的?
反向代理负蝲均衡能以软g方式来实玎ͼ如apache mod_proxy、netscape proxy{,也可以在高速缓存器、负载均衡器{硬件设备上实现?反向代理负蝲均衡可以优化的负蝲均衡{略和代理服务器的高速缓存技术结合在一P提升静态网늚讉K速度Q提供有益的性能Q由于网l外部用户不能直接访问真实的服务器,具备额外的安全性(同理QNAT负蝲均衡技术也有此优点Q?br />
其缺点主要表现在以下两个斚wQ?
反向代理是处于OSI参考模型第七层应用的,所以就必须为每一U应用服务专门开发一个反向代理服务器Q这样就限制?jin)反向代理负载均衡技术的应用范围Q现在一般都用于对web服务器的负蝲均衡?
针对每一ơ代理,代理服务器就必须打开两个q接Q一个对外,一个对内,因此在ƈ发连接请求数量非常大的时候,代理服务器的负蝲也就非常大了(jin)Q在最后代理服务器本n?x)成为服务的瓉?
一般来Ԍ可以用它来对q接数量不是特别大,但每ơ连接都需要消耗大量处理资源的站点q行负蝲均衡Q如search?
下面以在apache mod_proxy下做的反向代理负载均衡ؓ(f)配置实例Q在站点www.test.comQ我们按提供的内容进行分c,不同的服务器用于提供不同的内Ҏ(gu)务,对http://www.test.com/news的访问{到IP地址?92.168.1.1的内部服务器上处理,对http://www.test.com/it的访问{到服务器192.168.1.2上,对http://www.test.com/life的访问{到服务器192.168.1.3上,对http://www.test.com/love的访问{到合作站点http://www.love.com上,从而减Lapache服务器的负担Q达到负载均衡的目的?br />
首先要确定域名www.test.com在DNS上的记录对应apache服务器接口上hinternet合法注册的IP地址Q这h能internet上对www.test.com的所有连接请求发送给本台apache服务器?br />
在本台服务器的apache配置文ghttpd.conf中添加如下设|:(x)
proxypass /news http://192.168.1.1
proxypass /it http://192.168.1.2
proxypass /life http://192.168.1.3
proxypass /love http://www.love.com
注意Q此设|最好添加在httpd.conf文g“Section 2”以后的位|,服务?92.168.1.1-3也应是具有相应功能的www服务器,在重启服务时Q最好用apachectl configtest命o(h)(g)查一下配|是否有?
混合型负载均?br />
在有些大型网l,׃多个服务器群内硬件设备、各自的规模、提供的服务{的差异Q我们可以考虑l每个服务器采用最合适的负蝲均衡方式Q然后又在这多个服务器群间再一ơ负载均衡或集h以一个整体向外界提供服务Q即把这多个服务器群当做一个新的服务器)(j)Q从而达到最佳的性能。我们将q种方式UC为合型负蝲均衡。此U方式有时也用于单台均衡讑֤的性能不能满大量q接h的情况下?
下图展示?jin)一个应用示例,三个服务器群针对各自的特点,分别采用?jin)不同的负蝲均衡方式。当客户端发出域名解析请求时QDNS服务器依ơ把它解析成三个服务器群的VIPQ如此把客户端的q接h分别引向三个服务器群Q从而达C(jin)再一ơ负载均衡的目的?br />
在图中大家可能注意到Q负载均衡设备在|络拓朴上,可以处于外部|和内部|络间网关的位置Q也可以和内部服务器处于ƈ行的位置Q甚臛_以处于内部网l或internet上的L位置Q特别是在采用群集负载均衡时Q根本就没有单独的负载均衡设备?
服务器群内各服务器只有提供相同内容的服务才有负蝲均衡的意义,特别是在DNS负蝲均衡时。要不然Q这样会(x)造成大量q接h的丢失或׃多次q回内容的不同给客户造成混ؕ?br />
所以,如图的这个示例在实际中可能没有多大的意义Q因为如此大的服务内容相同但各服务器存在大量差异的|站q不多见?但做Z个示例,怿q是很有参考意义的.
|络负蝲均衡服务在Windows 2000 高服务器和W(xu)indows 2000 数据中心(j)服务器操作系l中均可得到。网l负载均衡提高了(jin)使用在诸如Web服务器、FTP服务器和其它关键d服务器上的因特网服务器程序的可用性和可~性。运行W(xu)indows 2000的单一计算机可以提供有限别的服务器可靠性和可~性。但是,通过两个或两个以上q行W(xu)indows 2000 高服务器的Lq成集Q网l负载均衡就能够提供关键d服务器所需的可靠性和性能?
每个Lq行一个所需服务器程序的独立拯Q诸如Web、FTP、Telnet或e-mail服务器程序。对于某些服务(如运行在Web服务器上的那些服务)(j)而言Q程序的一个拷贝运行在集内所有的L上,而网l负载均衡则工作负载在q些L间进行分配。对于其他服务(例如e-mailQ只有一C机处理工作负载,针对q些服务Q网l负载均衡允许网l通讯量流C个主ZQƈ在该L发生故障时将通讯量移臛_它主机?
|络负蝲均衡配置概述
|络负蝲均衡是Windows 2000的一个网l驱动程序。它的操作对TCP/IP|络栈而言是透明的?
为确保网l性能辑ֈ最优,|络负蝲均衡通常使用一个网l适配器来处理客户到群集的通讯量,而其它对服务器的|络通讯量则l由一个单独网l适配器。然而,W二个网l适配器是不需要的?
来自负蝲均衡服务器应用的数据库访?/strong>
某些服务器程序需要访问由客户h来更新的数据库。当q些E序的负载在集内得到均衡分配时Q相关的更新工作则应保持同步状态。每个主机均使用一个本地、独立的数据库拷贝,而该数据库在必要时可脱机q入。另一U方法是Q群集主够共享对一个独立的|络数据库服务器的访问。也可以l合使用q些Ҏ(gu)。例如,静态Web|页能够在全部群集服务器间进行复Ӟ以确保快速访问和全面定w。但是,数据库访问请求将转发至ؓ(f)多个Web服务器进行更新处理的公共数据库服务器?
某些关键dE序可能需要用高度可用的数据库引擎以保全面定w。逐渐圎ͼh集识别能力的数据库软g得到部|Ԍ用以在整个群集模式中提供h高度可用性与可~性的数据库访问。Microsoft SQL Server是一个例子,它能够用群集服务功能以双节Ҏ(gu)式进行部|Ӏ群集服务可保在一个节点发生故障的情况下,剩余的节点将承担h障电(sh)脑的职责Q这Pp够ؓ(f)Microsoft SQL Server 客户提供q乎q箋的服务。由于两台电(sh)脑共享一个公q盘子pȝQ则上述功能是可以实现的?
注释
通过讨论在以下两个群集解x案之间进行比选是十分重要的。第一Ҏ(gu)Q网l负载均衡主要是分配引入的传输控制协?|际协议QTCP/IPQ通讯量;加入q一解决Ҏ(gu)的计机形成一U群集。第二方案,集服务主要是提供从一台计机到另一计算机的故障应急服务;加入q一解决Ҏ(gu)的计机形成另一U群集。网l负载均衡群集通常q行W(xu)eb服务器程序。群集服务通常q行数据库程?当与|络负蝲均衡联合使用?。通过两个群集连接在一起以互补方式发挥作用Q用户创Z(jin)全面集解决Ҏ(gu)?
|络负蝲均衡如何工作
|络负蝲均衡为共同工作且使用两个或两个以上主机群集的Web服务器提供了(jin)高度可用性和可~性。因特网客户使用单一的IP地址(或一个多M机的一l地址)讉K集。客户不能将单一服务器从集中区分开来。服务器E序不能识别它们正运行于一个群集中。但是,׃|络负蝲均衡集即在群集主机发生故障的情况下仍能提供了(jin)不间断的服务Q故而,它与q行单一服务器程序的单一L大相径庭。与单一L相比Q群集还能对客户需求做出更q捷的反应?
|络负蝲均衡通过在主机发生故障或脱机的情况下网l通讯量重新指定给其它工作集L来提供高度的可用性。与脱机L现存的连接虽然丢失,但因特网服务仍然处于可用状态。在大多数情况下(例如Q就Web服务器而言)Q客戯Y件会(x)自动重试发生故障的连接,而且Q客户仅需几秒的gq即可收到响应?
|络负蝲均衡通过在群集的一个或一个以上虚拟IP地址当中分配引入的网l通讯量来提供伸羃能力。群集中的主Z是对不同客户h做出响应Q即使是来自同一客户的多重请求也如是。例如,W(xu)eb览器可能在单一Web|页内获得群集内不同L处的多重映射。这加速了(jin)处理q程q羃短了(jin)对客L(fng)响应旉?
|络负蝲均衡使在一个子|上的全部群集主够ؓ(f)集的主IP地址Q以?qing)多MZ的额外IP地址Q同时检引入的|络通讯量。在每个集L上,|络负蝲均衡驱动E序充当?jin)一个介于群集适配器驱动程序和TCP/IP栈之间的qo(h)器,以这U方式L能够收到一部分引入的网l通讯量?
|络负蝲均衡使用全面分布式的法来从l计意义上将引入的客h到ZIP地址、端口和其它信息的群集主Z。在(g)查收到的数据包时Q所有主机均同步执行q种映射以迅速决定哪个主机应处理该数据包。除非群集主机数量发生变化,该映会(x)保持不变。网l负载均衡过滤算法在数据包处理程序方面要比在集中负蝲均衡E序斚w高效得多Q而这必须修改q发数据包。这׃ɾ|络负蝲均衡能够提供高得多的聚集带宽。通过直接在群集主Zq行Q网l负载均衡的性能q不受某一代处理器或网l技术的局限?
集通讯量的分配
|络负蝲均衡控制对从因特|客户到集内选定L的TCP与用h据报协议QUDPQ通讯量的分配Q做法如下:(x)在配|了(jin)|络负蝲q以后Q对集IP地址的引入客戯求由集内的所有主机收到。网l负载^衡在q些数据报到达TCP/IP协议软g之前Q就对这些数据报q行qo(h)以指定TCP和UDP端口。网l负载^衡只理TCP/IP中TCP和UDP协议Qƈ以逐端口方式控制它们的zd?
除了(jin)向指定端口的TCP和UDP通讯量之外,|络负蝲均衡不控制Q何引入的IP通讯量。网l负载均衡不对网际控制报文协?ICMP)、网际组成员协议(IGMP)、地址解析协议(ARP)或其它IP协议q行qo(h)。所有这些通讯量均不加修改C递给在群集内全部L上的TCP/IP协议软g。因为有?jin)TCP/IP的稳定性及(qing)其处理重复数据报的能力,其它协议p够在集环境内正运转。可是,当用群集IP地址Ӟ你可能预期从特定的点到点TCP/IPE序(比如ping)中看到重复的响应。这些程序能够通过为每个主Z用专用的IP地址来避免这U情늚发生?
集中收敛
|络负蝲均衡L通过在群集内定期交换l播或广播消息来协调彼此间的zd。这׃它们能够监控集所处的状态。当集所处状况发生变化时(比如L故障、脱L加入集)Q网l负载均衡就?x)调用一个称为集中收敛的处理q程Q在q个处理q中Q主Z间将交换消息以确定一个新的、持l的集状态,q推举一个具有最高优先的主机充当新的缺省主机。当集的全部主机就新的集状态达成一致时Q它们就?x)将集中收敛的完成记入Windows 2000的事件日志?
在集中收敛期_(d)除非故障L没有收到服务Q主机将一如往地处理引入的|络通讯量。客户对工作L的请求是不受影响的。在集中收敛完成Ӟ故障L的通讯量会(x)重新分配l剩余主机。负载均衡通讯量将在剩余宿主间分配Q从而达成特定的TCP或UDP端口间最大可能的负蝲均衡。如果一个主机添加到集中,集中收敛?x)允许该L接管处理端口的Q务,q由此之具备最高的优先U;同时Q集中收敛还该主机分到它所应负担的负蝲均衡通讯量䆾额。群集扩展不?x)?jing)响正在进行的集操作Qƈ且保证对因特|客户和服务器程序而言是以透明方式实现的。可是,在客L(fng)怼性被选定的情况下Q群集扩展会(x)影响到跨多重TCPq接的客戯路,q主要是因ؓ(f)在连接之间可能将客户映射C同的集L上去?jin)?
|络负蝲均衡假定只要L参加?jin)群集宿主间的正常消息交换,那么Q它?yu)在集内处于正常运转状态。如果其它主机在若干期间均未收到Ҏ(gu)息交换的响应Q它们就?x)启动一个集中收敛操作以重新分配先前由故障宿L担的负蝲。你能够控制消息交换的周期和用来军_启动集中收敛操作的通信遗漏ơ数。以上两者各自的默认值分别ؓ(f)1000毫秒 (1U??ơ。由于上q参C怿改,因此Q它们不能在"|络负蝲均衡属?对话框中q行讄。必要时Q这些参数可在系l注册表中以手工方式加以调整?/p>