﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-快乐工作，享受生活-文章分类-网站部署技术</title><link>http://www.blogjava.net/wangkx/category/26685.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 19 Oct 2007 11:09:52 GMT</lastBuildDate><pubDate>Fri, 19 Oct 2007 11:09:52 GMT</pubDate><ttl>60</ttl><item><title>负载均衡技术全攻略</title><link>http://www.blogjava.net/wangkx/articles/154316.html</link><dc:creator>柯西</dc:creator><author>柯西</author><pubDate>Fri, 19 Oct 2007 10:53:00 GMT</pubDate><guid>http://www.blogjava.net/wangkx/articles/154316.html</guid><wfw:comment>http://www.blogjava.net/wangkx/comments/154316.html</wfw:comment><comments>http://www.blogjava.net/wangkx/articles/154316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangkx/comments/commentRss/154316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangkx/services/trackbacks/154316.html</trackback:ping><description><![CDATA[<p>Internet的规模每一百天就会增长一倍，客户希望获得7天24小时的不间断可用性及较快的系统反应时间，而不愿屡次看到某个站点&#8220;Server Too Busy&#8221;及频繁的系统故障。</p>
<p>　　网络的各个核心部分随着业务量的提高、访问量和数据流量的快速增长，其处理能力和计算强度也相应增大，使得单一设备根本无法承担。在此情况下，如果扔掉现有设备去做大量的硬件升级，这样将造成现有资源的浪费，而且如果再面临下一次业务量的提升，这又将导致再一次硬件升级的高额成本投入，甚至性能再卓越的设备也不能满足当前业务量的需求。于是，负载均衡机制应运而生。</p>
<p>　　负载均衡（Load Balance）建立在现有网络结构之上，它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。</p>
<p>　　负载均衡有两方面的含义：首先，大量的并发访问或数据流量分担到多台节点设备上分别处理，减少用户等待响应的时间；其次，单个重负载的运算分担到多台节点设备上做并行处理，每个节点设备处理结束后，将结果汇总，返回给用户，系统处理能力得到大幅度提高。</p>
<p>　　本文所要介绍的负载均衡技术主要是指在均衡服务器群中所有服务器和应用程序之间流量负载的应用，目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。 </p>
<p>负载均衡技术分类 </p>
<p>　　目前有许多不同的负载均衡技术用以满足不同的应用需求，下面从负载均衡所采用的设备对象、应用的网络层次（指OSI参考模型）及应用的地理结构等来分类。</p>
<p>软/硬件负载均衡 <br />
　　软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡，如DNS Load Balance，CheckPoint Firewall-1 ConnectControl等，它的优点是基于特定环境，配置简单，使用灵活，成本低廉，可以满足一般的负载均衡需求。</p>
<p>　　软件解决方案缺点也较多，因为每台服务器上安装额外的软件运行会消耗系统不定量的资源，越是功能强大的模块，消耗得越多，所以当连接请求特别大的时候，软件本身会成为服务器工作成败的一个关键；软件可扩展性并不是很好，受到操作系统的限制；由于操作系统本身的Bug，往往会引起安全问题。</p>
<p>　　硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备，这种设备我们通常称之为负载均衡器，由于专门的设备完成专门的任务，独立于操作系统，整体性能得到大量提高，加上多样化的负载均衡策略，智能化的流量管理，可达到最佳的负载均衡需求。</p>
<p>　　负载均衡器有多种多样的形式，除了作为独立意义上的负载均衡器外，有些负载均衡器集成在交换设备中，置于服务器与Internet链接之间，有些则以两块网络适配器将这一功能集成到PC中，一块连接到Internet上，一块连接到后端服务器群的内部网络上。</p>
<p>　　一般而言，硬件负载均衡在功能、性能上优于软件方式，不过成本昂贵。 </p>
<p>本地/全局负载均衡<br />
　　负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance，也叫地域负载均衡)，本地负载均衡是指对本地的服务器群做负载均衡，全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。</p>
<p>　　本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题，并且不需花费昂贵开支购置性能卓越的服务器，充分利用现有设备，避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级，也只是简单地增加一个新的服务器到服务群中，而不需改变现有网络结构、停止现有的服务。</p>
<p>　　全局负载均衡主要用于在一个多区域拥有自己服务器的站点，为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器，从而获得最快的访问速度，也可用于子公司分散站点分布广的大公司通过Intranet（企业内部互联网）来达到资源统一合理分配的目的。</p>
<p>　　全局负载均衡有以下的特点： </p>
<p>实现地理位置无关性，能够远距离为用户提供完全的透明服务。 <br />
除了能避免服务器、数据中心等的单点失效，也能避免由于ISP专线故障引起的单点失效。 <br />
解决网络拥塞问题，提高服务器响应速度，服务就近提供，达到更好的访问质量。 <br />
网络层次上的负载均衡<br />
　　针对网络上负载过重的不同瓶颈所在，从网络的不同层次入手，我们可以采用相应的负载均衡技术来解决现有问题。</p>
<p>　　随着带宽增加，数据流量不断增大，网络核心部分的数据接口将面临瓶颈问题，原有的单一线路将很难满足需求，而且线路的升级又过于昂贵甚至难以实现，这时就可以考虑采用链路聚合（Trunking）技术。</p>
<p>　　链路聚合技术（第二层负载均衡）将多条物理链路当作一条单一的聚合逻辑链路使用，网络数据流量由聚合逻辑链路中所有物理链路共同承担，由此在逻辑上增大了链路的容量，使其能满足带宽增加的需求。</p>
<p>　　现代负载均衡技术通常操作于网络的第四层或第七层。第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址，对每次TCP连接请求动态使用其中一个内部IP地址，达到负载均衡的目的。在第四层交换机中，此种均衡技术得到广泛的应用，一个目标地址是服务器群VIP（虚拟IP，Virtual IP address）连接请求的数据包流经交换机，交换机根据源端和目的IP地址、TCP或UDP端口号和一定的负载均衡策略，在服务器IP和VIP间进行映射，选取服务器群中最好的服务器来处理连接请求。</p>
<p>　　第七层负载均衡控制应用层服务的内容，提供了一种对访问流量的高层控制方式，适合对HTTP服务器群的应用。第七层负载均衡技术通过检查流经的HTTP报头，根据报头内的信息来执行负载均衡任务。</p>
<p>　　第七层负载均衡优点表现在如下几个方面： </p>
<p>通过对HTTP报头的检查，可以检测出HTTP400、500和600系列的错误信息，因而能透明地将连接请求重新定向到另一台服务器，避免应用层故障。 <br />
可根据流经的数据类型（如判断数据包是图像文件、压缩文件或多媒体文件格式等），把数据流量引向相应内容的服务器来处理，增加系统性能。 <br />
能根据连接请求的类型，如是普通文本、图象等静态文档请求，还是asp、cgi等的动态文档请求，把相应的请求引向相应的服务器来处理，提高系统的性能及安全性。 <br />
　　第七层负载均衡受到其所支持的协议限制（一般只有HTTP），这样就限制了它应用的广泛性，并且检查HTTP报头会占用大量的系统资源，势必会影响到系统的性能，在大量连接请求的情况下，负载均衡设备自身容易成为网络整体性能的瓶颈。</p>
<p>负载均衡策略 </p>
<p>　　在实际应用中，我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器，而不管服务器是否宕机。而是想使Pentium III服务器比Pentium II能接受更多的服务请求，一台处理服务请求较少的服务器能分配到更多的服务请求，出现故障的服务器将不再接受服务请求直至故障恢复等等。</p>
<p>　　选择合适的负载均衡策略，使多个设备能很好的共同完成任务，消除或避免现有网络负载分布不均、数据流量拥挤反应时间长的瓶颈。在各负载均衡方式中，针对不同的应用需求，在OSI参考模型的第二、三、四、七层的负载均衡都有相应的负载均衡策略。 </p>
<p>　　负载均衡策略的优劣及其实现的难易程度有两个关键因素：一、负载均衡算法，二、对网络系统状况的检测方式和能力。</p>
<p>　　考虑到服务请求的不同类型、服务器的不同处理能力以及随机选择造成的负载分配不均匀等问题，为了更加合理的把负载分配给内部的多个服务器，就需要应用相应的能够正确反映各个服务器处理能力及网络状态的负载均衡算法：</p>
<p>轮循均衡（Round Robin）：每一次来自网络的请求轮流分配给内部中的服务器，从1至N然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。 </p>
<p><br />
权重轮循均衡（Weighted Round Robin）：根据服务器的不同处理能力，给每个服务器分配不同的权值，使其能够接受相应权值数的服务请求。例如：服务器A的权值被设计成1，B的权值是3，C的权值是6，则服务器A、B、C将分别接受到10%、30％、60％的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率，避免低性能的服务器负载过重。 </p>
<p><br />
随机均衡（Random）：把来自网络的请求随机分配给内部中的多个服务器。 </p>
<p><br />
权重随机均衡（Weighted Random）：此种均衡算法类似于权重轮循算法，不过在处理请求分担时是个随机选择的过程。 </p>
<p><br />
响应速度均衡（Response Time）：负载均衡设备对内部各服务器发出一个探测请求（例如Ping），然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态，但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间，而不是客户端与服务器间的最快响应时间。</p>
<p><br />
最少连接数均衡（Least Connection）：客户端的每一次请求服务在服务器停留的时间可能会有较大的差异，随着工作时间加长，如果采用简单的轮循或随机均衡算法，每一台服务器上的连接进程可能会产生极大的不同，并没有达到真正的负载均衡。最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录，记录当前该服务器正在处理的连接数量，当有新的服务连接请求时，将把当前请求分配给连接数最少的服务器，使均衡更加符合实际情况，负载更加均衡。此种均衡算法适合长时处理的请求服务，如FTP。</p>
<p><br />
处理能力均衡：此种均衡算法将把服务请求分配给内部中处理负荷（根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成）最轻的服务器，由于考虑到了内部服务器的处理能力及当前网络运行状况，所以此种均衡算法相对来说更加精确，尤其适合运用到第七层（应用层）负载均衡的情况下。 </p>
<p><br />
DNS响应均衡（Flash DNS）：在Internet上，无论是HTTP、FTP或是其它的服务请求，客户端一般都是通过域名解析来找到服务器确切的IP地址的。在此均衡算法下，分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求，并在同一时间内把此域名解析成各自相对应服务器的IP地址（即与此负载均衡设备在同一位地理位置的服务器的IP地址）并返回给客户端，则客户端将以最先收到的域名解析IP地址来继续请求服务，而忽略其它的IP地址响应。在种均衡策略适合应用在全局负载均衡的情况下，对本地负载均衡是没有意义的。 </p>
<p>尽管有多种的负载均衡算法可以较好的把数据流量分配给服务器去负载，但如果负载均衡策略没有对网络系统状况的检测方式和能力，一旦在某台服务器或某段负载均衡设备与服务器网络间出现故障的情况下，负载均衡设备依然把一部分数据流量引向那台服务器，这势必造成大量的服务请求被丢失，达不到不间断可用性的要求。所以良好的负载均衡策略应有对网络故障、服务器系统故障、应用服务故障的检测方式和能力：</p>
<p>Ping侦测：通过ping的方式检测服务器及网络系统状况，此种方式简单快速，但只能大致检测出网络及服务器上的操作系统是否正常，对服务器上的应用服务检测就无能为力了。 </p>
<p><br />
TCP Open侦测：每个服务都会开放某个通过TCP连接，检测服务器上某个TCP端口（如Telnet的23口，HTTP的80口等）是否开放来判断服务是否正常。 </p>
<p><br />
HTTP URL侦测：比如向HTTP服务器发出一个对main.html文件的访问请求，如果收到错误信息，则认为服务器出现故障。 <br />
　　负载均衡策略的优劣除受上面所讲的两个因素影响外，在有些应用情况下，我们需要将来自同一客户端的所有请求都分配给同一台服务器去负担，例如服务器将客户端注册、购物等服务请求信息保存的本地数据库的情况下，把客户端的子请求分配给同一台服务器来处理就显的至关重要了。有两种方式可以解决此问题，一是根据IP地址把来自同一客户端的多次请求分配给同一台服务器处理，客户端IP地址与服务器的对应信息是保存在负载均衡设备上的；二是在客户端浏览器cookie内做独一无二的标识来把多次请求分配给同一台服务器处理，适合通过代理服务器上网的客户端。</p>
<p>　　还有一种路径外返回模式（Out of Path Return），当客户端连接请求发送给负载均衡设备的时候，中心负载均衡设备将请求引向某个服务器，服务器的回应请求不再返回给中心负载均衡设备，即绕过流量分配器，直接返回给客户端，因此中心负载均衡设备只负责接受并转发请求，其网络负担就减少了很多，并且给客户端提供了更快的响应时间。此种模式一般用于HTTP服务器群，在各服务器上要安装一块虚拟网络适配器，并将其IP地址设为服务器群的VIP，这样才能在服务器直接回应客户端请求时顺利的达成三次握手。<br />
<br />
<br />
<br />
负载均衡实施要素 <br />
<br />
　　负载均衡方案应是在网站建设初期就应考虑的问题，不过有时随着访问流量的爆炸性增长，超出决策者的意料，这也就成为不得不面对的问题。当我们在引入某种负载均衡方案乃至具体实施时，像其他的许多方案一样，首先是确定当前及将来的应用需求，然后在代价与收效之间做出权衡。<br />
<br />
　　针对当前及将来的应用需求，分析网络瓶颈的不同所在，我们就需要确立是采用哪一类的负载均衡技术，采用什么样的均衡策略，在可用性、兼容性、安全性等等方面要满足多大的需求，如此等等。<br />
<br />
　　不管负载均衡方案是采用花费较少的软件方式，还是购买代价高昂在性能功能上更强的第四层交换机、负载均衡器等硬件方式来实现，亦或其他种类不同的均衡技术，下面这几项都是我们在引入均衡方案时可能要考虑的问题： <br />
<br />
性能：性能是我们在引入均衡方案时需要重点考虑的问题，但也是一个最难把握的问题。衡量性能时可将每秒钟通过网络的数据包数目做为一个参数，另一个参数是均衡方案中服务器群所能处理的最大并发连接数目，但是，假设一个均衡系统能处理百万计的并发连接数，可是却只能以每秒2个包的速率转发，这显然是没有任何作用的。 性能的优劣与负载均衡设备的处理能力、采用的均衡策略息息相关，并且有两点需要注意：一、均衡方案对服务器群整体的性能，这是响应客户端连接请求速度的关键；二、负载均衡设备自身的性能，避免有大量连接请求时自身性能不足而成为服务瓶颈。 有时我们也可以考虑采用混合型负载均衡策略来提升服务器群的总体性能，如DNS负载均衡与NAT负载均衡相结合。另外，针对有大量静态文档请求的站点，也可以考虑采用高速缓存技术，相对来说更节省费用，更能提高响应性能；对有大量ssl/xml内容传输的站点，更应考虑采用ssl/xml加速技术。 <br />
<br />
<br />
可扩展性：IT技术日新月异，一年以前最新的产品，现在或许已是网络中性能最低的产品；业务量的急速上升，一年前的网络，现在需要新一轮的扩展。合适的均衡解决方案应能满足这些需求，能均衡不同操作系统和硬件平台之间的负载，能均衡HTTP、邮件、新闻、代理、数据库、防火墙和 Cache等不同服务器的负载，并且能以对客户端完全透明的方式动态增加或删除某些资源。 <br />
<br />
<br />
灵活性：均衡解决方案应能灵活地提供不同的应用需求，满足应用需求的不断变化。在不同的服务器群有不同的应用需求时，应有多样的均衡策略提供更广泛的选择。 <br />
<br />
<br />
可靠性：在对服务质量要求较高的站点，负载均衡解决方案应能为服务器群提供完全的容错性和高可用性。但在负载均衡设备自身出现故障时，应该有良好的冗余解决方案，提高可靠性。使用冗余时，处于同一个冗余单元的多个负载均衡设备必须具有有效的方式以便互相进行监控，保护系统尽可能地避免遭受到重大故障的损失。 <br />
<br />
<br />
易管理性：不管是通过软件还是硬件方式的均衡解决方案，我们都希望它有灵活、直观和安全的管理方式，这样便于安装、配置、维护和监控，提高工作效率，避免差错。在硬件负载均衡设备上，目前主要有三种管理方式可供选择：一、命令行接口（CLI：Command Line Interface），可通过超级终端连接负载均衡设备串行接口来管理，也能telnet远程登录管理，在初始化配置时，往往要用到前者；二、图形用户接口（GUI：Graphical User Interfaces），有基于普通web页的管理，也有通过Java Applet 进行安全管理，一般都需要管理端安装有某个版本的浏览器；三、SNMP（Simple Network Management Protocol，简单网络管理协议）支持，通过第三方网络管理软件对符合SNMP标准的设备进行管理。<br />
负载均衡配置实例 <br />
<br />
DNS负载均衡 <br />
　　DNS负载均衡技术是在DNS服务器中为同一个主机名配置多个IP地址，在应答DNS查询时，DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果，将客户端的访问引导到不同的机器上去，使得不同的客户端访问不同的服务器，从而达到负载均衡的目的。<br />
<br />
　　DNS负载均衡的优点是经济简单易行，并且服务器可以位于internet上任意的位置。但它也存在不少缺点： <br />
<br />
为了使本DNS服务器和其他DNS服务器及时交互，保证DNS数据及时更新，使地址能随机分配，一般都要将DNS的刷新时间设置的较小，但太小将会使DNS流量大增造成额外的网络问题。 <br />
<br />
<br />
一旦某个服务器出现故障，即使及时修改了DNS设置，还是要等待足够的时间（刷新时间）才能发挥作用，在此期间，保存了故障服务器地址的客户计算机将不能正常访问服务器。 <br />
<br />
<br />
DNS负载均衡采用的是简单的轮循负载算法，不能区分服务器的差异，不能反映服务器的当前运行状态，不能做到为性能较好的服务器多分配请求，甚至会出现客户请求集中在某一台服务器上的情况。 <br />
<br />
<br />
要给每台服务器分配一个internet上的IP地址，这势必会占用过多的IP地址。 <br />
　　判断一个站点是否采用了DNS负载均衡的最简单方式就是连续的ping这个域名，如果多次解析返回的IP地址不相同的话，那么这个站点就很可能采用的就是较为普遍的DNS负载均衡。但也不一定，因为如果采用的是DNS响应均衡，多次解析返回的IP地址也可能会不相同。不妨试试Ping一下www.yesky.com，www.sohu.com，www.yahoo.com<br />
<br />
　　现假设有三台服务器来应对www.test.com的请求。在采用BIND 8.x DNS服务器的unix系统上实现起来比较简单，只需在该域的数据记录中添加类似下面的结果： <br />
<br />
　　www1 IN A 192.1.1.1 <br />
　　www2 IN A 192.1.1.2 <br />
　　www3 IN A 192.1.1.3 <br />
　　www IN CNAME www1<br />
　　www IN CNAME www2<br />
　　www IN CNAME www3<br />
<br />
　　在NT下的实现也很简单，下面详细介绍在win2000 server下实现DNS负载均衡的过程，NT4.0类似：<br />
<br />
打开&#8220;管理工具&#8221;下的&#8220;DNS&#8221;，进入DNS服务配置控制台。 <br />
<br />
<br />
打开相应DNS 服务器的&#8220;属性&#8221;，在&#8220;高级&#8221;选项卡的&#8220;服务器选项&#8221;中，选中&#8220;启用循环&#8221;复选框。此步相当于在注册表记录HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters中添加一个双字节制值（dword值）RoundRobin，值为1。 <br />
<br />
<br />
打开正向搜索区域的相应区域（如test.com），新建主机添加主机 (A) 资源记录，记录如下： <br />
<br />
www IN A 192.1.1.1 <br />
www IN A 192.1.1.2 <br />
www IN A 192.1.1.3 <br />
<br />
在这里可以看到的区别是在NT下一个主机名对应多个IP地址记录，但在unix下，是先添加多个不同的主机名分别对应个自的IP地址，然后再把这些主机赋同一个别名（CNAME）来实现的。 <br />
<br />
在此需要注意的是，NT下本地子网优先级会取代多宿主名称的循环复用，所以在测试时，如果做测试用的客户机IP地址与主机资源记录的IP在同一有类掩码范围内，就需要清除在&#8220;高级&#8221;选项卡&#8220;服务器选项&#8221;中的&#8220;启用netmask排序&#8221;。 <br />
NAT负载均衡<br />
　　NAT（Network Address Translation 网络地址转换）简单地说就是将一个IP地址转换为另一个IP地址，一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。每次NAT转换势必会增加NAT设备的开销，但这种额外的开销对于大多数网络来说都是微不足道的，除非在高带宽有大量NAT请求的网络上。<br />
<br />
　　NAT负载均衡将一个外部IP地址映射为多个内部IP地址，对每次连接请求动态地转换为一个内部服务器的地址，将外部连接请求引到转换得到地址的那个服务器上，从而达到负载均衡的目的。<br />
<br />
　　NAT负载均衡是一种比较完善的负载均衡技术，起着NAT负载均衡功能的设备一般处于内部服务器到外部网间的网关位置，如路由器、防火墙、四层交换机、专用负载均衡器等，均衡算法也较灵活，如随机选择、最少连接数及响应时间等来分配负载。 <br />
<br />
　　NAT负载均衡可以通过软硬件方式来实现。通过软件方式来实现NAT负载均衡的设备往往受到带宽及系统本身处理能力的限制，由于NAT比较接近网络的低层，因此就可以将它集成在硬件设备中，通常这样的硬件设备是第四层交换机和专用负载均衡器，第四层交换机的一项重要功能就是NAT负载均衡。 <br />
<br />
　　下面以实例介绍一下Cisco路由器NAT负载均衡的配置： <br />
<br />
　　现有一台有一个串行接口和一个Ethernet接口的路由器，Ethernet口连接到内部网络，内部网络上有三台web服务器，但都只是低端配置，为了处理好来自Internet上大量的web连接请求，因此需要在此路由器上做NAT负载均衡配置，把发送到web服务器合法Internet IP地址的报文转换成这三台服务器的内部本地地址。 其具体配置过程如下： <br />
<br />
做好路由器的基本配置，并定义各个接口在做NAT时是内部还是外部接口。 <br />
<br />
然后定义一个标准访问列表（standard access list），用来标识要转换的合法IP地址。 <br />
<br />
再定义NAT地址池来标识内部web服务器的本地地址，注意要用到关键字rotary，表明我们要使用轮循（Round Robin）的方式从NAT地址池中取出相应IP地址来转换合法IP报文。 <br />
<br />
<br />
最后，把目标地址为访问表中IP的报文转换成地址池中定义的IP地址。 <br />
　　相应配置文件如下：<br />
<br />
interface Ethernet0/0<br />
ip address 192.168.1.4 255.255.255.248<br />
ip nat inside<br />
!<br />
interface Serial0/0<br />
ip address 200.200.1.1 255.255.255.248 <br />
ip nat outside<br />
! <br />
ip access-list 1 permit 200.200.1.2<br />
!<br />
ip nat pool websrv 192.168.1.1 192.168.1.3 netmask 255.255.255.248 type rotary <br />
ip nat inside destination list 1 pool websrv <br />
<br />
<br />
<img alt="" src="http://bbs.gzec.com.cn/temp/qos1.jpg" border="0" /><br />
<br />
<br />
反向代理负载均衡<br />
　　普通代理方式是代理内部网络用户访问internet上服务器的连接请求，客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。<br />
<br />
　　反向代理（Reverse Proxy）方式是指以代理服务器来接受internet上的连接请求，然后将请求转发给内部网络上的服务器，并将从服务器上得到的结果返回给internet上请求连接的客户端，此时代理服务器对外就表现为一个服务器。<br />
<br />
　　反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理，从而达到负载均衡的目的。 <br />
<br />
　　反向代理负载均衡能以软件方式来实现，如apache mod_proxy、netscape proxy等，也可以在高速缓存器、负载均衡器等硬件设备上实现。 反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起，提升静态网页的访问速度，提供有益的性能；由于网络外部用户不能直接访问真实的服务器，具备额外的安全性（同理，NAT负载均衡技术也有此优点）。<br />
<br />
　　其缺点主要表现在以下两个方面： <br />
<br />
反向代理是处于OSI参考模型第七层应用的，所以就必须为每一种应用服务专门开发一个反向代理服务器，这样就限制了反向代理负载均衡技术的应用范围，现在一般都用于对web服务器的负载均衡。 <br />
<br />
针对每一次代理，代理服务器就必须打开两个连接，一个对外，一个对内，因此在并发连接请求数量非常大的时候，代理服务器的负载也就非常大了，在最后代理服务器本身会成为服务的瓶颈。 <br />
　　一般来讲，可以用它来对连接数量不是特别大，但每次连接都需要消耗大量处理资源的站点进行负载均衡，如search。 <br />
<br />
　　下面以在apache mod_proxy下做的反向代理负载均衡为配置实例：在站点www.test.com，我们按提供的内容进行分类，不同的服务器用于提供不同的内容服务，将对http://www.test.com/news的访问转到IP地址为192.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上，从而减轻本apache服务器的负担，达到负载均衡的目的。<br />
<br />
　　首先要确定域名www.test.com在DNS上的记录对应apache服务器接口上具有internet合法注册的IP地址，这样才能使internet上对www.test.com的所有连接请求发送给本台apache服务器。<br />
<br />
　　在本台服务器的apache配置文件httpd.conf中添加如下设置： <br />
<br />
　　proxypass /news http://192.168.1.1 <br />
　　proxypass /it http://192.168.1.2 <br />
　　proxypass /life http://192.168.1.3 <br />
　　proxypass /love http://www.love.com <br />
<br />
　　注意，此项设置最好添加在httpd.conf文件&#8220;Section 2&#8221;以后的位置，服务器192.168.1.1-3也应是具有相应功能的www服务器，在重启服务时，最好用apachectl configtest命令检查一下配置是否有误.<br />
<br />
<br />
混合型负载均衡<br />
　　在有些大型网络，由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异，我们可以考虑给每个服务器群采用最合适的负载均衡方式，然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务（即把这多个服务器群当做一个新的服务器群），从而达到最佳的性能。我们将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。 <br />
<br />
　　下图展示了一个应用示例，三个服务器群针对各自的特点，分别采用了不同的负载均衡方式。当客户端发出域名解析请求时，DNS服务器依次把它解析成三个服务器群的VIP，如此把客户端的连接请求分别引向三个服务器群，从而达到了再一次负载均衡的目的。<br />
<br />
　　在图中大家可能注意到，负载均衡设备在网络拓朴上，可以处于外部网和内部网络间网关的位置，也可以和内部服务器群处于并行的位置，甚至可以处于内部网络或internet上的任意位置，特别是在采用群集负载均衡时，根本就没有单独的负载均衡设备。 <br />
<br />
　　服务器群内各服务器只有提供相同内容的服务才有负载均衡的意义，特别是在DNS负载均衡时。要不然，这样会造成大量连接请求的丢失或由于多次返回内容的不同给客户造成混乱。<br />
<br />
　　所以，如图的这个示例在实际中可能没有多大的意义，因为如此大的服务内容相同但各服务器群存在大量差异的网站并不多见。 但做为一个示例，相信还是很有参考意义的.<br />
</p>
<img src ="http://www.blogjava.net/wangkx/aggbug/154316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangkx/" target="_blank">柯西</a> 2007-10-19 18:53 <a href="http://www.blogjava.net/wangkx/articles/154316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络负载均衡技术概况</title><link>http://www.blogjava.net/wangkx/articles/154315.html</link><dc:creator>柯西</dc:creator><author>柯西</author><pubDate>Fri, 19 Oct 2007 10:52:00 GMT</pubDate><guid>http://www.blogjava.net/wangkx/articles/154315.html</guid><wfw:comment>http://www.blogjava.net/wangkx/comments/154315.html</wfw:comment><comments>http://www.blogjava.net/wangkx/articles/154315.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wangkx/comments/commentRss/154315.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wangkx/services/trackbacks/154315.html</trackback:ping><description><![CDATA[<h2><strong>介绍</strong></h2>
<strong></strong>
<p>网络负载均衡服务在Windows 2000 高级服务器和Windows 2000 数据中心服务器操作系统中均可得到。网络负载均衡提高了使用在诸如Web服务器、FTP服务器和其它关键任务服务器上的因特网服务器程序的可用性和可伸缩性。运行Windows 2000的单一计算机可以提供有限级别的服务器可靠性和可伸缩性。但是，通过将两个或两个以上运行Windows 2000 高级服务器的主机连成群集，网络负载均衡就能够提供关键任务服务器所需的可靠性和性能。 </p>
<p>每个主机运行一个所需服务器程序的独立拷贝，诸如Web、FTP、Telnet或e-mail服务器程序。对于某些服务（如运行在Web服务器上的那些服务）而言，程序的一个拷贝运行在群集内所有的主机上，而网络负载均衡则将工作负载在这些主机间进行分配。对于其他服务（例如e-mail）只有一台主机处理工作负载，针对这些服务，网络负载均衡允许网络通讯量流到一个主机上，并在该主机发生故障时将通讯量移至其它主机。 </p>
<p><strong>网络负载均衡配置概述</strong><br />
网络负载均衡是Windows 2000的一个网络驱动程序。它的操作对TCP/IP网络栈而言是透明的。 </p>
<p>为确保网络性能达到最优，网络负载均衡通常使用一个网络适配器来处理客户到群集的通讯量，而其它对服务器的网络通讯量则经由一个单独网络适配器。然而，第二个网络适配器是不需要的。 </p>
<p><strong>来自负载均衡服务器应用的数据库访问</strong><br />
某些服务器程序需要访问由客户请求来更新的数据库。当这些程序的负载在群集内得到均衡分配时，相关的更新工作则应保持同步状态。每个主机均使用一个本地、独立的数据库拷贝，而该数据库在必要时可脱机并入。另一种方法是，群集主机能够共享对一个独立的网络数据库服务器的访问。也可以组合使用这些方法。例如，静态Web网页能够在全部群集服务器间进行复制，以确保快速访问和全面容错。但是，数据库访问请求将转发至为多个Web服务器进行更新处理的公共数据库服务器。 <br />
某些关键任务程序可能需要使用高度可用的数据库引擎以确保全面容错。逐渐地，具有群集识别能力的数据库软件将得到部署，用以在整个群集模式中提供具有高度可用性与可伸缩性的数据库访问。Microsoft SQL Server就是一个例子，它能够使用群集服务功能以双节点方式进行部署。群集服务可确保在一个节点发生故障的情况下，剩余的节点将承担起故障电脑的职责，这样，就能够为Microsoft SQL Server 客户提供近乎连续的服务。由于两台电脑共享一个公共磁盘子系统，则上述功能是可以实现的。 </p>
<p><strong>注释</strong><br />
通过讨论在以下两个群集解决方案之间进行比选是十分重要的。第一方案，网络负载均衡主要是分配引入的传输控制协议/网际协议（TCP/IP）通讯量；加入这一解决方案的计算机形成一种群集。第二方案，群集服务主要是提供从一台计算机到另一计算机的故障应急服务；加入这一解决方案的计算机形成另一种群集。网络负载均衡群集通常运行Web服务器程序。群集服务通常运行数据库程序(当与网络负载均衡联合使用时)。通过将两个群集连接在一起以互补方式发挥作用，用户创建了全面群集解决方案。 </p>
<p><strong>网络负载均衡如何工作</strong><br />
网络负载均衡为共同工作且使用两个或两个以上主机群集的Web服务器提供了高度可用性和可伸缩性。因特网客户使用单一的IP地址(或一个多主主机的一组地址)访问群集。客户不能将单一服务器从群集中区分开来。服务器程序不能识别它们正运行于一个群集中。但是，由于网络负载均衡群集即使在群集主机发生故障的情况下仍能提供了不间断的服务，故而，它与运行单一服务器程序的单一主机大相径庭。与单一主机相比，群集还能对客户需求做出更迅捷的反应。 </p>
<p>网络负载均衡通过在主机发生故障或脱机的情况下将网络通讯量重新指定给其它工作群集主机来提供高度的可用性。与脱机主机现存的连接虽然丢失，但因特网服务仍然处于可用状态。在大多数情况下(例如，就Web服务器而言)，客户软件会自动重试发生故障的连接，而且，客户仅需几秒的延迟即可收到响应。 </p>
<p>网络负载均衡通过在群集的一个或一个以上虚拟IP地址当中分配引入的网络通讯量来提供伸缩能力。群集中的主机于是对不同客户请求做出响应，即使是来自同一客户的多重请求也如是。例如，Web浏览器可能在单一Web网页内获得群集内不同主机处的多重映射。这就加速了处理过程并缩短了对客户的响应时间。 </p>
<p>网络负载均衡使在一个子网上的全部群集主机能够为群集的主IP地址（以及多主主机上的额外IP地址）同时检测引入的网络通讯量。在每个群集主机上，网络负载均衡驱动程序充当了一个介于群集适配器驱动程序和TCP/IP栈之间的过滤器，以这种方式使主机能够收到一部分引入的网络通讯量。 </p>
<p>网络负载均衡使用全面分布式的算法来从统计意义上将引入的客户映射到基于IP地址、端口和其它信息的群集主机上。在检查收到的数据包时，所有主机均同步执行这种映射以迅速决定哪个主机应处理该数据包。除非群集主机数量发生变化，该映射会保持不变。网络负载均衡过滤算法在数据包处理程序方面要比在集中负载均衡程序方面高效得多，而这必须修改并重发数据包。这就使网络负载均衡能够提供高得多的聚集带宽。通过直接在群集主机上运行，网络负载均衡的性能并不受某一代处理器或网络技术的局限。 </p>
<p><strong>群集通讯量的分配</strong><br />
网络负载均衡控制对从因特网客户到群集内选定主机的TCP与用户数据报协议（UDP）通讯量的分配，做法如下：在配置了网络负载平衡以后，对群集IP地址的引入客户请求由群集内的所有主机收到。网络负载平衡在这些数据报到达TCP/IP协议软件之前，就对这些数据报进行过滤以指定TCP和UDP端口。网络负载平衡只管理TCP/IP中TCP和UDP协议，并以逐端口方式控制它们的活动。 </p>
<p>除了流向指定端口的TCP和UDP通讯量之外，网络负载均衡不控制任何引入的IP通讯量。网络负载均衡不对网际控制报文协议(ICMP)、网际组成员协议(IGMP)、地址解析协议(ARP)或其它IP协议进行过滤。所有这些通讯量均不加修改地传递给在群集内全部主机上的TCP/IP协议软件。因为有了TCP/IP的稳定性及其处理重复数据报的能力，其它协议就能够在群集环境内正确运转。可是，当使用群集IP地址时，你可能预期从特定的点到点TCP/IP程序(比如ping)中看到重复的响应。这些程序能够通过为每个主机使用专用的IP地址来避免这种情况的发生。 </p>
<p><strong>集中收敛</strong><br />
网络负载均衡主机通过在群集内定期交换组播或广播消息来协调彼此间的活动。这就使它们能够监控群集所处的状态。当群集所处状况发生变化时(比如主机故障、脱离或加入群集)，网络负载均衡就会调用一个称为集中收敛的处理过程，在这个处理过中，主机之间将交换消息以确定一个新的、持续的群集状态，并推举一个具有最高优先级的主机充当新的缺省主机。当群集的全部主机就新的群集状态达成一致时，它们就会将集中收敛的完成记入Windows 2000的事件日志。 </p>
<p>在集中收敛期间，除非故障主机没有收到服务，主机将一如继往地处理引入的网络通讯量。客户对工作主机的请求是不受影响的。在集中收敛完成时，故障主机的通讯量会重新分配给剩余主机。负载均衡通讯量将在剩余宿主间分配，从而达成特定的TCP或UDP端口间最大可能的负载均衡。如果一个主机添加到群集中，集中收敛会允许该主机接管处理端口的任务，并由此使之具备最高的优先级；同时，集中收敛还将使该主机分到它所应负担的负载均衡通讯量份额。群集扩展不会影响正在进行的群集操作，并且保证对因特网客户和服务器程序而言是以透明方式实现的。可是，在客户的相似性被选定的情况下，群集扩展会影响到跨越多重TCP连接的客户话路，这主要是因为在连接之间可能将客户映射到不同的群集主机上去了。 </p>
<p>网络负载均衡假定只要主机参加了群集宿主间的正常消息交换，那么，它就在群集内处于正常运转状态。如果其它主机在若干期间均未收到对消息交换的响应，它们就会启动一个集中收敛操作以重新分配先前由故障宿主承担的负载。你能够控制消息交换的周期和用来决定启动集中收敛操作的通信遗漏次数。以上两者各自的默认值分别为1000毫秒 (1秒)和5次。由于上述参数不常修改，因此，它们不能在"网络负载均衡属性"对话框中进行设置。必要时，这些参数可在系统注册表中以手工方式加以调整。</p>
<img src ="http://www.blogjava.net/wangkx/aggbug/154315.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wangkx/" target="_blank">柯西</a> 2007-10-19 18:52 <a href="http://www.blogjava.net/wangkx/articles/154315.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>