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