China-pub coM 第27章建立多服务器网站 本书的绝大部分是围绕着在单一服务器网站上的Web应用程序的开发与优化,而多服务 器网站的开发与优化同单一服务器上的情形有细微的差别。本章重点研究多服务器网站以及 它们的工作方式 主要讨论以下问题: 多服务器网站的定义,以及何时或者是否应当建立一个多服务器网站 建立一个Web阵的各种方法及其优势与不足。 从结构方面考虑实现在多台机器上运行的网络应用程序 首先让我们看一下一个多服务器网站的构成 27.1多服务器网站 最典型的网站有一个单一的响应HTTP请求的网络服务器,这个服务器可能使用ASP动态 地产生HTTP或者简单地提供静态内容。这个服务器也可能连接到本地或远程的数据库上,图 27-1就是这种配置。 随着用户数量的增加,性能开始下降。如 nternet 何解决这个问题。正如在上一章所看到的,典 且且 型的做法是,每隔一定时间分析软件的结构, 冈络服务器数据库服务器 在各种各样的算法中清理出过于臃肿的内容。 网络服务器也可以通过增加CPU、额外的RAM 图27-1网络服务器的配置 和更快的硬盘驱动器增强其性能。然而,最终可能无法再通过改进系统的性能使其达到可接 受的水平。对于 Internet应用程序,这种情况早已出现。改善系统性能的一种显而易见的方式 就是通过多网络服务器分散或平衡负载。 即使网站的用户数量不多,对于单个服务器配置,也存在一些其他的潜在问题。每一个 IT经理的一个基本假设就是任何机器都会失败,如果这个失败的机器作为网络服务器,则用 户无论如何也不能进入这个网站。对于商业站点来说这将带来许多麻烦。考虑一个在线经纪 人例子,如果一个在线经纪人不能被访问,这个在线经纪人的顾客可能在等待网站恢复的时 候损失大量的资金。 此外,需要注意的是,维护也是管理生产环境时不可缺少的部分。有一些常规的安全性 公告要求应用程序热修补和对系统或系统软件的服务补丁。这可能需要替换硬件。当网站仅 有一个服务器时,即使是最一般的改变,也要将整个网站停下来。这将导致数小时的维修以 及IT职员的抱怨 最后还有一个内容升级的问题。网络应用程序的发展趋向于不断改变网站的内容。在 个独立的服务器上展示新的内容或让内部用户验证网站的正确性是一个极好的方法。这样能 避免许多令人烦恼的问题和咨询电话 图27-2展示了多服务器网站的配置
下载 第27章 建立多服务器网站 本书的绝大部分是围绕着在单一服务器网站上的 Web 应用程序的开发与优化,而多服务 器网站的开发与优化同单一服务器上的情形有细微的差别。本章重点研究多服务器网站以及 它们的工作方式。 主要讨论以下问题: • 多服务器网站的定义,以及何时或者是否应当建立一个多服务器网站。 • 建立一个We b阵的各种方法及其优势与不足。 • 从结构方面考虑实现在多台机器上运行的网络应用程序。 首先让我们看一下一个多服务器网站的构成。 27.1 多服务器网站 最典型的网站有一个单一的响应 H T T P请求的网络服务器,这个服务器可能使用 A S P动态 地产生H T T P或者简单地提供静态内容。这个服务器也可能连接到本地或远程的数据库上,图 2 7 - 1就是这种配置。 随着用户数量的增加,性能开始下降。如 何解决这个问题。正如在上一章所看到的,典 型的做法是,每隔一定时间分析软件的结构, 在各种各样的算法中清理出过于臃肿的内容。 网络服务器也可以通过增加 C P U、额外的R A M 和更快的硬盘驱动器增强其性能。然而,最终可能无法再通过改进系统的性能使其达到可接 受的水平。对于 I n t e r n e t应用程序,这种情况早已出现。改善系统性能的一种显而易见的方式 就是通过多网络服务器分散或平衡负载。 即使网站的用户数量不多,对于单个服务器配置,也存在一些其他的潜在问题。每一个 I T经理的一个基本假设就是任何机器都会失败,如果这个失败的机器作为网络服务器,则用 户无论如何也不能进入这个网站。对于商业站点来说这将带来许多麻烦。考虑一个在线经纪 人例子,如果一个在线经纪人不能被访问,这个在线经纪人的顾客可能在等待网站恢复的时 候损失大量的资金。 此外,需要注意的是,维护也是管理生产环境时不可缺少的部分。有一些常规的安全性 公告要求应用程序热修补和对系统或系统软件的服务补丁。这可能需要替换硬件。当网站仅 有一个服务器时,即使是最一般的改变,也要将整个网站停下来。这将导致数小时的维修以 及I T职员的抱怨。 最后还有一个内容升级的问题。网络应用程序的发展趋向于不断改变网站的内容。在一 个独立的服务器上展示新的内容或让内部用户验证网站的正确性是一个极好的方法。这样能 避免许多令人烦恼的问题和咨询电话。 图2 7 - 2展示了多服务器网站的配置。 网络服务器 数据库服务器 图27-1 网络服务器的配置 Internet
第7章建立多服务器网站811 载 请求进入到几个网络服务器中的一个,这个服务器在处理请求的过程中从数据库服务器 中读取数据,或者向其中写入数据。如果 台网络服务器出了故障,其他的网络服务器 将会处理这些附加的请求。这种配置提供了 负载平衡,负载将被分配或平衡到多个网络 服务器上。这种配置也提供容错,在容错范 络服务器 围内,任何一部分出现故障将不影响网站的 可用性 此外,网络服务器多于数据库服务器。(hcmk 通常,一个数据库服务器能够处理由多个网 络服务器产生的负载,这样可以不必平衡数 数据库服务器 据库服务器负载。但是仍然需要防止任何单 台机器的故障导致整个网站瘫痪,出于这 目的,要给数据库服务器一个冗余的后备配 置。这将意味着将有一台额外的(备用)机 器专门用于应付主要机器的故障,这称为故 障屏蔽( failover)配置,其原因是备用机 器阻止了失败的现象在用户面前出现。 图27-2多服务器网站的配置 总而言之,使用Web阵的优点是: ·增强了事务性的吞吐量 允许大量的用户同时工作 增加了冗余度(容错)。 ·增强了可用性,在例行维护时不用停机 27.1.1Web阵的不足 在进一步深入研究之前,首先要问自己这样一个问题:增加一个Web阵是否是一件好事。 当讨论多网络服务器网站的运行优点时,同样也需要讨论它的不足之处 明显的缺点是增加了系统的复杂性,当请求通过多服务器时,需要某些模式来分配请求 给这些服务器。最具有代表性的是需要增加网络硬件或软件组件。这不仅增加了相关的开发 和管理工作,而且也增加了测试工作。为了确定系统按希望工作,必须测试系统的冗余、负 载平衡和故障屏障等各个方面 另一个缺点是这种变化可能影响系统结构,将在后面讨论这些问题。状态管理、用户管 理和资源管理等模式,移植到多服务器系统时需要进行改变。一种简单的例子是管理上传的 文件,如果这些文件当前是放在本地的目录结构中,需要修改系统使其指向中心的共享目录 最后,当将原来使用一台机器的网站改为使用多台机器时,要增加管理的费用。IT职 需要对多台机器进行追踪,监控每台机器的配置。内容、代码、热修补、补丁等等必须写入 到每台服务器。尽管冗余使得管理能在运行期间执行,但是冗余和容错不能免除管理员的责 任。此外,测试环境必须真实地(最大程度地)反映工作环境,也就是要测试更多机器。 总而言之,使用Web阵列的不足之处是:
请求进入到几个网络服务器中的一个,这个服务器在处理请求的过程中从数据库服务器 中读取数据,或者向其中写入数据。如果一 台网络服务器出了故障,其他的网络服务器 将会处理这些附加的请求。这种配置提供了 负载平衡,负载将被分配或平衡到多个网络 服务器上。这种配置也提供容错,在容错范 围内,任何一部分出现故障将不影响网站的 可用性。 此外,网络服务器多于数据库服务器。 通常,一个数据库服务器能够处理由多个网 络服务器产生的负载,这样可以不必平衡数 据库服务器负载。但是仍然需要防止任何单 台机器的故障导致整个网站瘫痪,出于这一 目的,要给数据库服务器一个冗余的后备配 置。这将意味着将有一台额外的(备用)机 器专门用于应付主要机器的故障,这称为故 障屏蔽( f a i l o v e r)配置,其原因是备用机 器阻止了失败的现象在用户面前出现。 总而言之,使用We b阵的优点是: • 增强了事务性的吞吐量。 • 允许大量的用户同时工作。 • 增加了冗余度(容错)。 • 增强了可用性,在例行维护时不用停机。 27.1.1 We b阵的不足 在进一步深入研究之前,首先要问自己这样一个问题:增加一个 We b阵是否是一件好事。 当讨论多网络服务器网站的运行优点时,同样也需要讨论它的不足之处。 明显的缺点是增加了系统的复杂性,当请求通过多服务器时,需要某些模式来分配请求 给这些服务器。最具有代表性的是需要增加网络硬件或软件组件。这不仅增加了相关的开发 和管理工作,而且也增加了测试工作。为了确定系统按希望工作,必须测试系统的冗余、负 载平衡和故障屏障等各个方面。 另一个缺点是这种变化可能影响系统结构,将在后面讨论这些问题。状态管理、用户管 理和资源管理等模式,移植到多服务器系统时需要进行改变。一种简单的例子是管理上传的 文件,如果这些文件当前是放在本地的目录结构中,需要修改系统使其指向中心的共享目录。 最后,当将原来使用一台机器的网站改为使用多台机器时,要增加管理的费用。 I T职员 需要对多台机器进行追踪,监控每台机器的配置。内容、代码、热修补、补丁等等必须写入 到每台服务器。尽管冗余使得管理能在运行期间执行,但是冗余和容错不能免除管理员的责 任。此外,测试环境必须真实地(最大程度地)反映工作环境,也就是要测试更多机器。 总而言之,使用We b阵列的不足之处是: 第27章 建立多服务器网站计计811 下载 图27-2 多服务器网站的配置 网络服务器 网络服务器 网络服务器 数据库服务器 网络服务器 Internet
812 SP3高级编程 China. coM 下载 增加了复杂性。 影响系统的结构。 增加了管理工作。 不要轻视这些缺点的影响。快速交付软件的能力是 Internet商务的强大竞争优势。建立一 个web阵,同单个服务器网站相比,将会花费大量资金、较长的时间(对于第一次而言)和 较高的经常性费用。如果站点的用户有限,没有重要的使命,能够承担由于例行维修和预料 不到的错误引起的关机所产生的后果,那么就尽可能避免建立一个Web阵 但是,如果正在开发一个网络应用程序,而且将来可能面对大量的用户,最好考虑周到 些。一旦应用程序运行于多服务器配置(尽管实际上没有多个服务器),那么增加附加的资 源来应付负载增大的问题就非常容易。如果开始没有这样做,扩展服务器的工作会变慢(潜 在有阻塞),根据网站的条件,可能会是几天或者几周而不是几小时 上面讨论了Web阵的优点和缺点,就让我们看一下一个Web阵到底是如何工作的 27.1.2Web阵基础 Web阵是如何工作的?考虑一个HTTP请求的处理过程,如图27-3所示。 浏览器 DNS服务器 网络服务器 输入URL 匹配URL到IP 建立连接 连接已建立 发送HTTP请求 接收页面 图27-3一个HTTP请求的处理过程 用户将URL输入浏览器,在浏览器向服务器发送TCP/P请求之前,浏览器需要知道网站 的IP地址。浏览器根据用户输入的主机名通过询问域名系统(DNS)服务器来查寻相应的IP 地址 DNS服务器包含主机名/P地址对的映射,如果需要的映射不在某个DNS服务器上,则服 务器就会向第二个DNS服务器询问。最终,这个询问将被发送到主机网络的DNS服务器,这 个DNS服务器把找到的IP地址发送给头一个DNS服务器,由这个服务器把数据返回浏览器 应当注意的是,实际上DNS服务器的操作要比这里简单解释的复杂得多,关于在 Internet上使 用域名系统的详细描述超出了本书的范围
812计计ASP 3 高级编程 下载 • 增加了复杂性。 • 影响系统的结构。 • 增加了管理工作。 不要轻视这些缺点的影响。快速交付软件的能力是 I n t e r n e t商务的强大竞争优势。建立一 个We b阵,同单个服务器网站相比,将会花费大量资金、较长的时间(对于第一次而言)和 较高的经常性费用。如果站点的用户有限,没有重要的使命,能够承担由于例行维修和预料 不到的错误引起的关机所产生的后果,那么就尽可能避免建立一个 We b阵。 但是,如果正在开发一个网络应用程序,而且将来可能面对大量的用户,最好考虑周到 一些。一旦应用程序运行于多服务器配置(尽管实际上没有多个服务器),那么增加附加的资 源来应付负载增大的问题就非常容易。如果开始没有这样做,扩展服务器的工作会变慢(潜 在有阻塞),根据网站的条件,可能会是几天或者几周而不是几小时。 上面讨论了We b阵的优点和缺点,就让我们看一下一个 We b阵到底是如何工作的。 27.1.2 We b阵基础 We b阵是如何工作的?考虑一个 H T T P请求的处理过程,如图2 7 - 3所示。 图27-3 一个H T T P请求的处理过程 用户将U R L输入浏览器,在浏览器向服务器发送 T C P / T P请求之前,浏览器需要知道网站 的I P地址。浏览器根据用户输入的主机名通过询问域名系统( D N S)服务器来查寻相应的 I P 地址。 D N S服务器包含主机名 / I P地址对的映射,如果需要的映射不在某个 D N S服务器上,则服 务器就会向第二个 D N S服务器询问。最终,这个询问将被发送到主机网络的 D N S服务器,这 个D N S服务器把找到的 I P地址发送给头一个 D N S服务器,由这个服务器把数据返回浏览器。 应当注意的是,实际上 D N S服务器的操作要比这里简单解释的复杂得多,关于在 I n t e r n e t上使 用域名系统的详细描述超出了本书的范围。 用户 输入URL 匹配URL 到IP 建立连接 连接已建立 发送HTTP 请求 接收页面 浏览器 DNS 服务器 网络服务器
第7章建立多服务器网站813 下载 旦浏览器有了IP机址,就会开始连接,在状态栏将会看到如“ Connecting to site 1270.00”之类的显示,一旦建立了连接,浏览器就向服务器发送HTTP请求,服务器分析这 些请求(如果服务器负载过重,就把这些请求放入队列中),并把HTTP响应发送回浏览器。 当涉及到单个的服务器时,总是由同样的机器响应HTTP请求。所有负载平衡模式都涉及 到可能把后续的HTTP请求安排到不同的服务器这一问题,这会使状态管理变得困难。 7.2负载平衡模式 对于目前在 Internet以及 intranet网站上广泛使用的负载平衡有几种可行的方案,包括: ·DNS循环复用法:使用DNS服务器平衡负载。 硬件负载平衡:使用与路由器相似的硬件部件。 微软的 TCP/IP Network Load balancing:这是一个解决负载分配的软件 复合方式:硬件与软件组合的解决方式 我们将逐个讨论这些解决方案,说明它们是如何工作的,分析一下它们在负载平衡与容错 方面的性能。同时也将指出系统中的相关变化,例如对服务器的影响。最后还将简单地介绍 些相关的技术,例如微软的 High Availability Clustering以及COM+ Dynamic Load Balancing 27.2.1DNS循环复用法 DNS循环复用法(DNSRoundrobin)是将HTTP请求安排到多个服务器上的简单方法。 如前所述,一个DNS服务器保持着位于某个特定域内的每台机器的主机名P地址对的集合 其列表如下: Www. wrox com xxx.xxx. xXx. 3 每个xxx代表0~255的数(这里没有给出实际的数字,以避免由于无意而涉及任何人的服 务器)。 当建立一个DNS服务器时(微软的 Windows2000 Advanced server中包含DNS服务),为 每个附加的机器创建一个额外的IP条目(在DNS中称为记录或地址记录),这个结果列表与下 面类似 wrOx. COm xxx. xxx. XXx.2 wroX. corm xxx. xxx. xxx. 3 xxx.xxx.xxx. 4 wrox. Co www.wr。x.com xxx. xxx. xxx. 6 当响应DNS的请求时,DNS服务器将循环使用表中所有记录。这样,在上面的例子中 对于第一个解析www.wroxcom的请求,DNS服务器将会返回XXX.XXX.XXX.3,对于下一个解析 相同主机名称的请求,DNS服务器将会返回 XXX. XXX. XXX.4,等等。结果所有的请求被分配到 所有的网络服务器上。 负载平衡 HTIP请求被平衡到一系列网络服务器上,但是只是在每一个服务器收到相同数量的请求 这一个方面达到了平衡。这是假设所有的服务器具有相同的资源(一种可行的假设),而且所 有的事务处理都要求相同数量的系统资源(这是一种没有意义的假设)。这种解决方案根本没 有注意到当前Web阵中机器上的处理器负载。当负载分配达到某种程度时,这是一种效率极
一旦浏览器有了 I P机址,就会开始连接,在状态栏将会看到如“ Connecting to site 1 2 7 . 0 . 0 . 0”之类的显示,一旦建立了连接,浏览器就向服务器发送 H T T P请求,服务器分析这 些请求(如果服务器负载过重,就把这些请求放入队列中),并把H T T P响应发送回浏览器。 当涉及到单个的服务器时,总是由同样的机器响应 H T T P请求。所有负载平衡模式都涉及 到可能把后续的H T T P请求安排到不同的服务器这一问题,这会使状态管理变得困难。 27.2 负载平衡模式 对于目前在I n t e r n e t以及i n t r a n e t网站上广泛使用的负载平衡有几种可行的方案,包括: • DNS循环复用法:使用D N S服务器平衡负载。 • 硬件负载平衡:使用与路由器相似的硬件部件。 • 微软的T C P / I P Network Load Balancing:这是一个解决负载分配的软件。 • 复合方式:硬件与软件组合的解决方式。 我们将逐个讨论这些解决方案,说明它们是如何工作的,分析一下它们在负载平衡与容错 方面的性能。同时也将指出系统中的相关变化,例如对服务器的影响。最后还将简单地介绍一 些相关的技术,例如微软的High Availability Clustering以及C O M+Dynamic Load Balancing。 27.2.1 DNS循环复用法 D N S循环复用法(DNS Round Robin)是将H T T P请求安排到多个服务器上的简单方法。 如前所述,一个 D N S服务器保持着位于某个特定域内的每台机器的主机名 / I P地址对的集合, 其列表如下: 每个x x x代表0 ~ 2 5 5的数(这里没有给出实际的数字,以避免由于无意而涉及任何人的服 务器)。 当建立一个D N S服务器时(微软的Windows 2000 Advanced Server中包含D N S服务),为 每个附加的机器创建一个额外的 I P条目(在D N S中称为记录或地址记录),这个结果列表与下 面类似: 当响应 D N S的请求时, D N S服务器将循环使用表中所有记录。这样,在上面的例子中, 对于第一个解析w w w.wrox.com 的请求,D N S服务器将会返回x x x . x x x . x x x . 3,对于下一个解析 相同主机名称的请求, D N S服务器将会返回 x x x . x x x . x x x . 4,等等。结果所有的请求被分配到 所有的网络服务器上。 1. 负载平衡 H T T P请求被平衡到一系列网络服务器上,但是只是在每一个服务器收到相同数量的请求 这一个方面达到了平衡。这是假设所有的服务器具有相同的资源(一种可行的假设),而且所 有的事务处理都要求相同数量的系统资源(这是一种没有意义的假设)。这种解决方案根本没 有注意到当前 We b阵中机器上的处理器负载。当负载分配达到某种程度时,这是一种效率极 第27章 建立多服务器网站计计813 下载
814 SP3高级编程 Chinapub.com 下载 低的方式,不妨以一个有两个网络服务器的Web阵为例,如图274所示 图27-4两个网络服务器组成的Web阵 如果由于服务器A响应HTTP请求而使它的处理器利用率饱和(100%),而服务器B的处理 器利用率很低(比如10%-15%),DNS循环复用法仍会把HTTP请求的一半发送给服务器A, 而此时服务器A已经过载了,这不仅效果很差而且会导致用户在看到站点的执行缓慢时去点击 在浏览器上的 Refresh按钮。这不仅是极坏的尝试,而且会使请求队列变长,直到浏览器上出 现“ Server too busy”消息。 2.容错 对于DNS循环复用法,另一个缺点是不能很好地处理系统的运行中断。仍以两个服务器 组成的Web阵为例。如果服务器A崩溃,则所有HTTP请求的一半被安排到一台无效的服务器 上,结果就会是在用户的浏览器上显示“ Server Unavailable”消息。可以停下来维修机器, 但需要更新DNS表。这本身就有一个问题,许多DNS服务器缓存了主机名P地址对信息,可 能在几天内都不更新。 3.管理 从管理的立场来看,DNS循环复用法是一个管理者的梦想。管理DNS记录很容易,而且 花少许时间就可以为DNS表添加记录,对于现有的网络配置根本没有任何影响 4.DNS循环复用法小结 总之,DNS循环复用法 循环服务器列表将请求平均分配到各服务器 不根据实际的负载情况来决定请求的分配。 无法发现没有响应的或不可利用的系统 ·不影响网络服务器的硬件配置。 容易管理 是负载平衡的一种廉价解决方案 27.2.2硬件负载平衡 比DNS循环复用法能力更强是硬件负载平衡。图27-5就是一种网络配置的示意图。 有一种新的硬件,即硬件负载平衡器,其位于网络服务器和其他网络设备(防火墙、路 由器等)之间。针对某个实际URL的用户请求被安排到负载平衡器,连接到负载平衡器上的 是一组网络服务器,负载平衡器表现为单个服务器,这种配置方式就是所谓的“集群”。根据
814计计ASP 3 高级编程 下载 低的方式,不妨以一个有两个网络服务器的 We b阵为例,如图2 7 - 4所示。 图27-4 两个网络服务器组成的We b阵 如果由于服务器A响应H T T P请求而使它的处理器利用率饱和( 1 0 0 %),而服务器B的处理 器利用率很低(比如 1 0 % ~ 1 5 %),D N S循环复用法仍会把 H T T P请求的一半发送给服务器 A, 而此时服务器A已经过载了,这不仅效果很差而且会导致用户在看到站点的执行缓慢时去点击 在浏览器上的R e f r e s h按钮。这不仅是极坏的尝试,而且会使请求队列变长,直到浏览器上出 现“Server too busy”消息。 2. 容错 对于D N S循环复用法,另一个缺点是不能很好地处理系统的运行中断。仍以两个服务器 组成的We b阵为例。如果服务器 A崩溃,则所有H T T P请求的一半被安排到一台无效的服务器 上,结果就会是在用户的浏览器上显示“ Server Unavailable”消息。可以停下来维修机器, 但需要更新D N S表。这本身就有一个问题,许多 D N S服务器缓存了主机名 / I P地址对信息,可 能在几天内都不更新。 3. 管理 从管理的立场来看, D N S循环复用法是一个管理者的梦想。管理 D N S记录很容易,而且 花少许时间就可以为D N S表添加记录,对于现有的网络配置根本没有任何影响。 4. DNS循环复用法小结 总之,D N S循环复用法: • 循环服务器列表将请求平均分配到各服务器。 • 不根据实际的负载情况来决定请求的分配。 • 无法发现没有响应的或不可利用的系统。 • 不影响网络服务器的硬件配置。 • 容易管理。 • 是负载平衡的一种廉价解决方案。 27.2.2 硬件负载平衡 比D N S循环复用法能力更强是硬件负载平衡。图 2 7 - 5就是一种网络配置的示意图。 有一种新的硬件,即硬件负载平衡器,其位于网络服务器和其他网络设备(防火墙、路 由器等)之间。针对某个实际 U R L的用户请求被安排到负载平衡器,连接到负载平衡器上的 是一组网络服务器,负载平衡器表现为单个服务器,这种配置方式就是所谓的“集群”。根据 服务器A 服务器B 数据库服务器 Internet
ina-pub.com 第7章建立多服务器网站815 下载 接收到的发送到集群的TCP/P包,负载平衡器执行如下动作 网络服务器 硬件负载平衡器 Internet 且且 热备用 E且 集群 图27-5硬件负载平衡网络配置示意图 ·决定集群中哪一个服务器将接受下一个TCPP请求, ·检査服务器和应用程序(TCPP端口)的可用性。 在有些情况下,检查由服务器返回的数据的有效性。当服务器作出响应时,这是非常方 便的,但由于某些问题,服务器的响应总是“ Http Error404” ·转换IP报头,以便包能指向选中的服务器,这项转化技术通常称为网络地址转换 (NAT)。 将包发送到服务器 当服务器对客户做出响应时,负载平衡器就对返回到客户的包做出相似的转换,第二次 NAT的结果使得客户接收到的TCPP包看起来就是来自代表此集群的IP 负载平衡 负载平衡器如何决定由哪一个服务器响应发送来的请求呢?这因厂商不同而不同,但最 基本的算法是相同的。负载平衡器通过监视网络活动性,采集了大量的信息。这些活动性包 括进入和来自各个服务器的信息传输量、各个服务器响应TCP/P请求的速度、每个服务器目 前连接的用户数量以及每个服务器对负载的反应的历史情况。负载平衡器为系统管理员提供 了一种基于网络流量的算法,而且这种算法一般包括循环复用法和比率(加权循环复用法) 算法。 负载平衡器通过网络流量监控,能够智能地有效分配处理负载到多个服务器上,再看 下上面DNS循环复用法中讨论的两个服务器的例子,如图27-6所示 如果由于服务器A响应HTTP请求,使其处理器利用率饱和(100%),而服务器B的处理器 利用率很低(如10%-15%),硬件负载平衡器将注意到服务器A的响应很慢,它将安排后续的 请求到服务器B。这将持续到在网络服务器A上的负载回到一个可以接受的水平。其结果比使 用DNS循环复用法好得多。 2.容错 再以两个服务器的web阵为例。如果服务器A停机,硬件负载平衡器将不发送任何TCP/P 流到服务器A。实际上,服务器本身可能正在运行,但是如果web服务不能进行响应,负载 平衡器就会将服务器A从可用的服务器的名单上去掉,并将所有的流传送给服务器B,这也比
第27章 建立多服务器网站计计815 下载 接收到的发送到集群的T C P / I P包,负载平衡器执行如下动作: 图27-5 硬件负载平衡网络配置示意图 • 决定集群中哪一个服务器将接受下一个 T C P / I P请求。 • 检查服务器和应用程序(T C P / I P端口)的可用性。 • 在有些情况下,检查由服务器返回的数据的有效性。当服务器作出响应时,这是非常方 便的,但由于某些问题,服务器的响应总是“ HTTP Error 404”。 • 转换 I P报头,以便包能指向选中的服务器,这项转化技术通常称为网络地址转换 (N AT)。 • 将包发送到服务器。 • 当服务器对客户做出响应时,负载平衡器就对返回到客户的包做出相似的转换,第二次 N AT的结果使得客户接收到的T C P / I P包看起来就是来自代表此集群的 I P。 1. 负载平衡 负载平衡器如何决定由哪一个服务器响应发送来的请求呢?这因厂商不同而不同,但最 基本的算法是相同的。负载平衡器通过监视网络活动性,采集了大量的信息。这些活动性包 括进入和来自各个服务器的信息传输量、各个服务器响应 T C P / I P请求的速度、每个服务器目 前连接的用户数量以及每个服务器对负载的反应的历史情况。负载平衡器为系统管理员提供 了一种基于网络流量的算法,而且这种算法一般包括循环复用法和比率(加权循环复用法) 算法。 负载平衡器通过网络流量监控,能够智能地有效分配处理负载到多个服务器上,再看一 下上面D N S循环复用法中讨论的两个服务器的例子,如图 2 7 - 6所示。 如果由于服务器A响应H T T P请求,使其处理器利用率饱和( 1 0 0 %),而服务器B的处理器 利用率很低(如1 0 % ~ 1 5 %),硬件负载平衡器将注意到服务器 A的响应很慢,它将安排后续的 请求到服务器B。这将持续到在网络服务器 A上的负载回到一个可以接受的水平。其结果比使 用D N S循环复用法好得多。 2. 容错 再以两个服务器的We b阵为例。如果服务器 A停机,硬件负载平衡器将不发送任何 T C P / I P 流到服务器A。实际上,服务器本身可能正在运行,但是如果 Web 服务不能进行响应,负载 平衡器就会将服务器 A从可用的服务器的名单上去掉,并将所有的流传送给服务器 B,这也比 硬件负载平衡器 热备用 集群 网络服务器 Internet
816 ASP3高级编程 Chinapub.com 下载 使用DNS循环复用法的效果好 硬件负载平衡器 Internet 服务器A 且 数据库服务器 热备用 服务器B 图27-6由两个网络服务器组成的硬件负载平衡Web阵 关于硬件负载平衡方案还有一点应当注意:负载平衡器本身成为故障的中心点。为了解 决这一点,典型的方案应包括第二个负载平衡器作为热备用,这种冗余故障屏蔽配置是相当 可靠的。负载平衡器通常通过像RS-232电缆这样的串行通信介质连接,每个单元都有“看门 狗”处理器不断地彼此交流。在某个单元失败或不正常时,“看门狗”单元协商并决定由哪 个单元完成负载平衡 通常,硬件负载平衡器是产品质量部件,其一般特性包括将单个IP地址或介一个完整的C 类地址空间与单个服务器关联起来的能力、遥控、基于网络的管理能力、在服务器故障的情 况下的通知能力、实时的监视性能和统计信息的能力 如果对硬件负载平衡系统感兴趣的话,Cabletron公司(www.cabletron.com)和 CiscoSystems公司(www.cisco.com)已经有了很好的负载平衡的解决方案,在他们 网站上有大量有用的信息。 3.管理 硬件负载平衡的管理比DNS循环复用法的管理复杂得多,但是不必畏惧。建立负载平衡 器并不比建立一个典型的路由器困难(实际上,这些装置基本上都是路由器的形式),而且你 的网络管理员对于路由器的技术应该很了解。对于网络负载平衡模式的管理是相当集中的, 而且不影响服务器机器本身。这在负责建立并监控服务器的管理员眼中就是一个巨大的成功。 4.局限性 对于硬件负载平衡解决方案的实际能力有一些局限,最大的局限是带宽。由于在进入和 输出的过程中都要将TCP/P报头转变为一个新的IP地址,通过负载平衡器的,带宽往往被限 制在45~50Mbps。这对于一般数据而言是一个巨大的带宽,大的站点在其使用高峰期能够超 过这种能力,额外的信息包被丢弃了。显而易见,这不是最优化的,而且对于大部分网站也 是不可行的 硬件负载平衡解决方案的另一不足之处就是费用太高。写本书时,使用一对硬件负载平 衡器的冗余配置的费用在20000美元以上,并且在继续上涨。这就意味着必须在负载平衡器上 花更多的钱而不是在额外的服务器上。 最后,基于硬件的负载平衡算法必须建立在来自于网络流量的可观测数据的基础上,对 服务器的请求的特性可能使服务器的响应变慢,比如HTTP请求包含要花费大量时间的数据库
使用D N S循环复用法的效果好。 图27-6 由两个网络服务器组成的硬件负载平衡 We b阵 关于硬件负载平衡方案还有一点应当注意:负载平衡器本身成为故障的中心点。为了解 决这一点,典型的方案应包括第二个负载平衡器作为热备用,这种冗余故障屏蔽配置是相当 可靠的。负载平衡器通常通过像 R S-2 3 2电缆这样的串行通信介质连接,每个单元都有“看门 狗”处理器不断地彼此交流。在某个单元失败或不正常时,“看门狗”单元协商并决定由哪一 个单元完成负载平衡。 通常,硬件负载平衡器是产品质量部件,其一般特性包括将单个 I P地址或介一个完整的C 类地址空间与单个服务器关联起来的能力、遥控、基于网络的管理能力、在服务器故障的情 况下的通知能力、实时的监视性能和统计信息的能力。 如果对硬件负载平衡系统感兴趣的话, C a b l e t r o n公司( w w w. c a b l e t r o n . c o m )和 Cisco Systems公司(w w w. c i s c o . c o m)已经有了很好的负载平衡的解决方案,在他们 网站上有大量有用的信息。 3. 管理 硬件负载平衡的管理比 D N S循环复用法的管理复杂得多,但是不必畏惧。建立负载平衡 器并不比建立一个典型的路由器困难(实际上,这些装置基本上都是路由器的形式),而且你 的网络管理员对于路由器的技术应该很了解。对于网络负载平衡模式的管理是相当集中的, 而且不影响服务器机器本身。这在负责建立并监控服务器的管理员眼中就是一个巨大的成功。 4. 局限性 对于硬件负载平衡解决方案的实际能力有一些局限,最大的局限是带宽。由于在进入和 输出的过程中都要将 T C P / I P报头转变为一个新的 I P地址,通过负载平衡器的,带宽往往被限 制在4 5~5 0 M b p s。这对于一般数据而言是一个巨大的带宽,大的站点在其使用高峰期能够超 过这种能力,额外的信息包被丢弃了。显而易见,这不是最优化的,而且对于大部分网站也 是不可行的。 硬件负载平衡解决方案的另一不足之处就是费用太高。写本书时,使用一对硬件负载平 衡器的冗余配置的费用在 2 0 0 0 0美元以上,并且在继续上涨。这就意味着必须在负载平衡器上 花更多的钱而不是在额外的服务器上。 最后,基于硬件的负载平衡算法必须建立在来自于网络流量的可观测数据的基础上,对 服务器的请求的特性可能使服务器的响应变慢,比如 H T T P请求包含要花费大量时间的数据库 816计计ASP 3 高级编程 下载 硬件负载平衡器 服务器A 服务器B 数据库服务器 热备用 Internet
Chinapul.com 第7章建立多服务器网站817 下载 操作,但并没有阻塞网络服务。在这种情况下,硬件负载平衡器会认为服务器很忙,但实际 上这时服务器是可用的资源。 尽管有这些不足之处,但硬件负载平衡对于完成一个网站的负载平衡有着不容置疑的可 靠性与实用性 5.硬件负载平衡小结 总之,硬件负载平衡: ·通过将进入和输出的TCP/P流转换为服务器集群内的IP地址,将负载分配到多个服务器 上 ·根据观察服务器集群内的网络流情况,决定请求如何分配。这从负载平衡的意义上看是 高效的,但是在服务器资源方面,例如CPU的利用率、HTTP请求的队列长度和线程数 量等等,不一定高效。 监控每一个服务器和每一个应用程序的可用性。负载平衡器在将包送到服务器之前检查 可用性。 ·不影响网络服务器的硬件配置 管理相对容易 对于负载平衡及容错而言,是一种“昂贵”的解决方案 27.2.3 TCP/IP Network Load Balancing 微软开发了一个软件组件,称为 Network Load Balancing(NLB),是作为 Windows2000 Advanced server的一部分提供的。NLB首次于1997年10月以 Windows Load Balancing Serrice (WLBS)这个名字作为 Windows nt40的一种插件发布,一个使用NLB的网络配置示例如图 27-7所示。 集群NIC驱动程序 指定服务器的NIC 集群NC驱动程序 指定服务器的NC 驱动程序 NLB服务 NLB服务 TCP/IP栈 TCPP栈 TCPP栈 TCP/IP流 TCP/P流 TCPP流 单NC配置 双NIC配置 图27-7使用NLB的网络配置的示意图 你会发现NLB所需要的配置不同于标准的网络配置,也会发现来自于 Internet的流在一个 特定IP地址上能够被集群中所有服务器识别。这里所说的IP地址是集群的IP地址,应当代表网
第27章 建立多服务器网站计计817 下载 操作,但并没有阻塞网络服务。在这种情况下,硬件负载平衡器会认为服务器很忙,但实际 上这时服务器是可用的资源。 尽管有这些不足之处,但硬件负载平衡对于完成一个网站的负载平衡有着不容置疑的可 靠性与实用性。 5. 硬件负载平衡小结 总之,硬件负载平衡: • 通过将进入和输出的T C P / I P流转换为服务器集群内的 I P地址,将负载分配到多个服务器 上。 • 根据观察服务器集群内的网络流情况,决定请求如何分配。这从负载平衡的意义上看是 高效的,但是在服务器资源方面,例如 C P U的利用率、H T T P请求的队列长度和线程数 量等等,不一定高效。 • 监控每一个服务器和每一个应用程序的可用性。负载平衡器在将包送到服务器之前检查 可用性。 • 不影响网络服务器的硬件配置。 • 管理相对容易。 • 对于负载平衡及容错而言,是一种“昂贵”的解决方案。 27.2.3 TCP/IP Network Load Balancing 微软开发了一个软件组件,称为 Network Load Balancing(N L B),是作为Windows 2000 Advanced Server的一部分提供的。N L B首次于1 9 9 7年1 0月以Windows Load Balancing Serrice (W L B S)这个名字作为Windows NT 4.0的一种插件发布,一个使用 N L B的网络配置示例如图 2 7 - 7所示。 图27-7 使用N L B的网络配置的示意图 你会发现N L B所需要的配置不同于标准的网络配置,也会发现来自于 I n t e r n e t的流在一个 特定I P地址上能够被集群中所有服务器识别。这里所说的 I P地址是集群的I P地址,应当代表网 集群NIC驱动程序 NLB 服务 NLB 服务 TCP/IP 栈 TCP/IP 流 单NIC配置 双NIC配置 TCP/IP 流 TCP/IP 流 TCP/IP 栈 TCP/IP 栈 指定服务器的NIC 集群NIC 驱动程序 驱动程序 指定服务器的NIC 驱动程序
818s:;商程 Chinaopul coM 下载 站服务器的URL。每一个服务器还有一个唯一的IP地址用于非集群传输。图27-7也暗示了对 于每一台服务器存着两个相互独立的网络连接。NLB不要求这样做,它可以一块网络接口卡 ( Network Interface Card,NIC)上工作,这样不影响服务器的硬件。但是,大多数情况应该 使用一个额外的NIC来实现,后面将更加详细地讨论这个问题。 每台服务器的配置是很简单的。一旦安装了NLB软件,必须指定一个集群IP地址、一个 唯一的主机ID(1~32,一个NLB实现被限制在最多有32个服务器)、权重(因为并不是所有系 统都有同样的容量)和一系列规则。每一项规则决定了哪一个TCP/P应用程序要进行负载平 衡及其亲和性(没有、单个IP或者C类许可,下面很快将讨论这个问题)。对于基于网络的流 的一条典型规则是,80端口(标准的HTTP端口)没有亲和性 1.负载平衡 你可能会有这样的疑问,最多可以有32个服务器收到同一IP地址的信息包,为什么客户 端没有收到32个响应呢?秘密在于微软称之为的“并行过滤”的东西。当安装了NLB服务以 后,它将自己插入在TCP/P栈与NIC驱动程序之间,所有传输到指定服务器的流直接通过, 对于指向集群的IP的流,NLB软件决定由哪个主机处理请求,这个服务器让流通过它的集群 NIC驱动程序。集群中的其他服务器过滤掉这个IP请求,所以只有被指定的服务器响应这个请 求。 NLB使用分布算法来确定每一个TCP/IP请求应该由哪个主机响应。这种算法使用的负载 信息是通过各主机收集并通过广播向外传播共享的。由于这是一个软件工具,因此这个负载 信息包括CPU的利用率、可使用的内存和其他情况的详细内容。通过监测网络流,它可以提 供一种更精确有效的负载平衡。因为这仅涉及过滤包而不涉及数据包的修改和再发送,所以 NLB不用面对硬件负载平衡模式中的那种吞吐量限制问题 前面已经指出NLB仅需一个NIC,然而,用两个NIC是一个好主意。图27-7展示了两个可 能方案。当用一个NlC时,所有 TCP/IP流都通过NLB服务。另外,非集群流和集群流通过同 样的NIC,宽带和处理时间被非集群流和集群流分享。增加另一块NC卡把集群流与指定服务 器的流分离,允许管理流和其他指定服务器的流直接进入服务器,从而使它们对集群的吞吐 量影响最小。 2.容错 NLB主机以一定周期交换广播消息,使它们能监视集群的状态。当一个主机进入或离开 集群时,NLB软件开始一个称作“集中( convergence)”的处理。在集中期间,主机确定新的 集群状态并调整映射算法以反映新的状态,通常这种处理不超过10秒钟。 NLB流的一部分是每个主机都参与的“心跳( heartbeat)”消息,心跳消息的周期是可以 配置的,缺省周期为一秒。如果主机在5个心跳消息周期内还没参与服务(或服务失败),则 认为它不再可用,其余的NLB的主机将开始“集中”过程。 3.管理 和前面讨论的解决方案不同,NLB影响每台服务器。它的实现涉及到每台服务器上的软 件安装和配置,以及安装附加的NlC(还有集线器或交换机端口、电缆接头等)。另外,根据 主机名字和分配给每台服务器的权重,配置每台机器。 好消息是NLB提供了对网上每台计算机的优秀的管理能力。一旦在主机上安装了这个软 件,就可以在集群中远程控制主机的加入、移去和配置
站服务器的 U R L。每一个服务器还有一个唯一的 I P地址用于非集群传输。图 2 7 - 7也暗示了对 于每一台服务器存着两个相互独立的网络连接。 N L B不要求这样做,它可以一块网络接口卡 (Network Interface Card,N I C)上工作,这样不影响服务器的硬件。但是,大多数情况应该 使用一个额外的N I C来实现,后面将更加详细地讨论这个问题。 每台服务器的配置是很简单的。一旦安装了 N L B软件,必须指定一个集群 I P地址、一个 唯一的主机I D(1 ~ 3 2,一个N L B实现被限制在最多有3 2个服务器)、权重(因为并不是所有系 统都有同样的容量)和一系列规则。每一项规则决定了哪一个 T C P / I P应用程序要进行负载平 衡及其亲和性(没有、单个 I P或者C类许可,下面很快将讨论这个问题)。对于基于网络的流 的一条典型规则是,8 0端口(标准的H T T P端口)没有亲和性。 1. 负载平衡 你可能会有这样的疑问,最多可以有 3 2个服务器收到同一 I P地址的信息包,为什么客户 端没有收到3 2个响应呢?秘密在于微软称之为的“并行过滤”的东西。当安装了 N L B服务以 后,它将自己插入在 T C P / I P栈与N I C驱动程序之间,所有传输到指定服务器的流直接通过, 对于指向集群的 I P的流,N L B软件决定由哪个主机处理请求,这个服务器让流通过它的集群 N I C驱动程序。集群中的其他服务器过滤掉这个 I P请求,所以只有被指定的服务器响应这个请 求。 N L B使用分布算法来确定每一个 T C P / I P请求应该由哪个主机响应。这种算法使用的负载 信息是通过各主机收集并通过广播向外传播共享的。由于这是一个软件工具,因此这个负载 信息包括C P U的利用率、可使用的内存和其他情况的详细内容。通过监测网络流,它可以提 供一种更精确有效的负载平衡。因为这仅涉及过滤包而不涉及数据包的修改和再发送,所以 N L B不用面对硬件负载平衡模式中的那种吞吐量限制问题。 前面已经指出N L B仅需一个N I C,然而,用两个N I C是一个好主意。图 2 7 - 7展示了两个可 能方案。当用一个 N I C时,所有T C P / I P流都通过N L B服务。另外,非集群流和集群流通过同 样的N I C,宽带和处理时间被非集群流和集群流分享。增加另一块 N I C卡把集群流与指定服务 器的流分离,允许管理流和其他指定服务器的流直接进入服务器,从而使它们对集群的吞吐 量影响最小。 2. 容错 N L B主机以一定周期交换广播消息,使它们能监视集群的状态。当一个主机进入或离开 集群时,N L B软件开始一个称作“集中( c o n v e rg e n c e)”的处理。在集中期间,主机确定新的 集群状态并调整映射算法以反映新的状态,通常这种处理不超过 1 0秒钟。 N L B流的一部分是每个主机都参与的“心跳( h e a r t b e a t)”消息,心跳消息的周期是可以 配置的,缺省周期为一秒。如果主机在 5个心跳消息周期内还没参与服务(或服务失败),则 认为它不再可用,其余的N L B的主机将开始“集中”过程。 3. 管理 和前面讨论的解决方案不同, N L B影响每台服务器。它的实现涉及到每台服务器上的软 件安装和配置,以及安装附加的 N I C(还有集线器或交换机端口、电缆接头等)。另外,根据 主机名字和分配给每台服务器的权重,配置每台机器。 好消息是N L B提供了对网上每台计算机的优秀的管理能力。一旦在主机上安装了这个软 件,就可以在集群中远程控制主机的加入、移去和配置。 818计计ASP 3 高级编程 下载
Chinapub.com 第7章建立多服务器网站819 下载 4.网络负载平衡小结 简而言之,一个NLB: ·通过并行过滤处理,给多个服务器分配负载 通过系统级负载观测,决定请求的分配 通过广播“心跳”消息,实现的容错。 要求在每个服务器上安装和配置附加的软件和可选的附加硬件。 有强大的远程管理能力。 是一个廉价的提供负载平衡和容错的解决方案。 27.24复合方式 对于负载平衡的另一个可行方案就是硬件与软件技术结合的复合方式。网络配置如图27-8 网络服务器 集群IP 且 特定IP 交换机 网络 且 哽件负载平衡器 Interne 网络服务器 集群IP 热备用 且且 且 特定IP 交换机网络 图27-8复合方式的网络配置 图27-8中有一套硬件负载平衡器和两个服务器集群,每一个集群都使用NLB来实行负载 平衡以及容错。硬件负载平衡器不关心这两个IP地址与其对应的集群中的服务器地址的变换 关系。同样,每个Web阵也不关心其他Web阵的存在
第27章 建立多服务器网站计计819 下载 4. 网络负载平衡小结 简而言之,一个N L B: • 通过并行过滤处理,给多个服务器分配负载。 • 通过系统级负载观测,决定请求的分配。 • 通过广播“心跳”消息,实现的容错。 • 要求在每个服务器上安装和配置附加的软件和可选的附加硬件。 • 有强大的远程管理能力。 • 是一个廉价的提供负载平衡和容错的解决方案。 27.2.4 复合方式 对于负载平衡的另一个可行方案就是硬件与软件技术结合的复合方式。网络配置如图 2 7 - 8 所示。 图27-8 复合方式的网络配置 图2 7 - 8中有一套硬件负载平衡器和两个服务器集群,每一个集群都使用 N L B来实行负载 平衡以及容错。硬件负载平衡器不关心这两个 I P地址与其对应的集群中的服务器地址的变换 关系。同样,每个We b阵也不关心其他We b阵的存在。 网络服务器 集群 IP 特定 IP 交换机 网络 硬件负载平衡器 集群IP 热备用 网络服务器 特定IP 交换机 网络 Internet