应用Win2000创建支持企业级访问的Web集群服务器
http://www.usingdo.net/usingdonews/usingdo14.asp?typeid=1&usingdottid=4
作为Microsoft公司全力推出的划时代操作系统,Windows 2000的目标是彻底改变用户的业务模式,快速建立起商务企业级的互联网络信息系统。Internet Information Services 5作为Windows 2000网络信息服务中的核心部分,更加提供了强大的功能。如何创建支持企业级海量用户访问的Web站点?对于例如电子商务网站和ISP客户的企业级用户访问需求,保证服务的可用性和可靠性的最佳途径是建立Web集群服务器。对于这一问题,Windows 2000 Advanced Server提供了很好的可伸缩性服务。
Web集群是由任意多台计算机组成的一种Web站点。当设计者创建Web集群时,可以选择三层Web体系结构(由Web服务器程序,COM+应用程序和数据库应用程序组成)。三层体系结构的优点是设计者可以将以下的各层次任务分散到不同的服务器上,而不是将它们都结合在一台服务器上:
? 表示层:发布内容
? 商业逻辑层:运行应用程序
? 数据层:访问数据库
使用若干台低成本服务器,设计者可以很容易地处理大量的客户请求,而不会产生任何不必要的延时。在多台计算机之间共享负载对于企业用户支持重量级应用程序是至关重要的:例如,处理财政事务,访问数据库,支持公司Intranet以及执行其他重要的日常活动。
一、相关术语
与Web集群相关的两个重要术语是:集群和负载平衡。下面将简要地介绍一下这些术语在Web集群中的含义。
1、集群
集群(clustering)是指按组划分不相互依赖,而又象管理一套单一系统一样对它们进行管理的一批服务器。一个服务器集群的最低要求如下:
? 至少有两台(或多台)联网服务器
? 集群管理软件,例如Network Load Balancing 或 Cluster Service 集群管理软件。
这些集群软件执行如下的任务:
? 检测集群中哪台计算机有故障
? 从任何故障或服务器过载情况中恢复系统
? 在集群中所有的服务器上平衡请求负载
? 将这批服务器作为一个单一系统进行管理
将服务器集群起来成为一个系统,具有以下的优点:
? 总是能够处理到来的请求。因为来自于客户的请求可以在几台服务器之间平衡分配,从而减少了某台服务器过载的可能性。如果一台服务器过载或故障,负载平衡能够将请求重新在其余的服务器上分配,从而不会干扰客户的正常访问。
? 易于管理。不用单独地管理每台服务器,管理员只需将它们作为一个单元进行管理。
? 更大的可扩展性。设计者可以很容易地添加更多的服务器到集群中,或者对已有的服务器升级,而这并不会干扰客户的请求。
2、负载平衡
负载平衡(load balancing)是指在一个Web集群中的多台服务器之间均衡地分配客户请求。一般地,负载平衡能增加系统吞吐率,而同时保持较低的响应时间。通过使用嵌入到Windows 2000 Server中的Network Load Balancing,主机能够检测每一个来访的IP报文,只有符合接收条件的才接收它。每个Network Load Balancing主机可以指定它将处理的报文百分比。作为一个选项,报文也可以平等地在所有的主机之间进行分配。如果一个主机故障,则负载平衡机制就会在剩余的主机之间重新分配报文。
通过使用Network Load Balancing提供的可扩展性,当需求增加时,管理员可以升级已有的服务器或者将新计算机添加到集群中,以处理更多的IP通信量。
二、Windows 2000 Advanced Server的分组负载平衡特性
我们下面将描述一下由Windows 2000 Advanced Server 提供的负载平衡特性:Network Load Balancing和Cluster Service 。
Network Load Balancing 和Cluster Service 可以增强任何设施的安全可靠性。将它们分组是一种功能强大的方法,用来将后端数据库和事务系统与基于Web的前端相结合,从而有效地提供给用户所需的可伸缩性、客户要求的高可用性。下面简要列出了每个解决方法,并给出如何将它们集成到一个三层配置中的实例:
? Network Load Balancing 平衡那些主要由入站TCP/IP通信产生的负载。管理员可以在第一层上建立Network Load Balancing,并且在集群的Web服务器上平衡站点的访问。
? Cluster Service是管理员对那些要求高可用性的数据库服务进行分组的理想选择,这些数据库服务可以是Microsoft SQL Server 7.0或其他数据敏感应用。管理员可以在第三层上建立Cluster Service,以完成诸如用户记帐和数据库定购的任务。
三、创建一个三层Web集群
通过将这两个负载平衡的特性结合起来,这些特性将是三层体系结构应用程序的理想支持。例如,如果电子商务网站安装使用一个基于Web的零售业务,则可以建立如下的集群:
? 在多台服务器上建立前端、用户界面(UI)层,使用Network Load Balancing以平衡和分配客户TCP/IP连接。当通信量增加时,升级已有的集群或者添加计算机到配置中。这样就保证站点不论什么时候都能够处理访问请求。
? 使用Cluster Service,以便为应用程序和三层应用程序的数据服务层提供结点故障接管功能。这将创建一个可靠的平台用于数据库、消息和类似的应用服务。
由于传统的电子商务网站在单一的服务器上存放所有这三个层次,这种拓扑结构将会引入一些新的概念。
图1显示了一个示例Web集群的特征,其中箭头表明内容是怎样进行复制的。
图1 示例Web集群服务器结构
下面将举例说明如何创建Web集群服务器。
1. 计算硬件需求
为了建立一个用于基于Web的零售业务,设计者需要确定实际需要多少台Web服务器来满足一个特定的应用。可以先从一台服务器开始,对其测试,而后在必要时对其进行升级。
在测试了单台服务器之后,设计者可能会发现服务器CPU的利用率特别高,而高速缓存命中率很低,并且在队列服务器中还留有许多请求。此时,可以通过添加处理器、内存、以及其他的硬件设备的方法来增加系统性能。如果这些解决方案也不能改善性能,则可以考虑添加另外的Web服务器。
由于没有现成的数学公式用于确定需要添加的服务器最佳数目,因此设计者可以从多个Web测试工具中进行选择,以帮助确定服务器的最佳数目。其中,一种工具是Web Application Stress Tool,该工具允许设计者模拟测试站点上具有几千个用户负载的情况。与System Monitor工具相结合,设计者可以很容易地确定一台单一的Web服务器的负载极限。Web服务器的主要瓶颈在于HTTP层,为了打破该瓶颈,设计者应该增加Web服务器。
在测试了单台服务器之后,设计者可能决定升级,以便可以有效地处理用户的Web访问请求。例如,可以添加两台Web服务器以组成Web集群的第一层。
2. 创建第一层
随着两个新Web服务器的加入,设计者现在必须通过运行Network Load Balancing来平衡这三个服务器间的请求负载。三台服务器从客户角度来看只是一台服务器。因为设计者只分配一个IP地址给一个集群中的三台服务器,因此管理集群十分容易。通过配置一台DNS服务器,设计者可以使用IP地址192.16.1.10建立www.example.com。该IP地址代表了集群中的所有主机(此时为三台服务器)。关于如何分配一个IP地址,请参考Windows 2000在线文档中的“Configure TCP/IP Settings(配置TCP/IP设置)”主题。
通过这种配置,设计者可以将站点拓扑结构由一台Web服务器改变为三台。现在可以使用Web Application Stress Tool再次测试应用程序,将会看到性能立即得到了改善。接下来,再次测试集群,但这次要使用几千个用户进行模拟,确认站点消耗的资源远小于单台计算机运行IIS 5所消耗的资源。如果应用程序需要更高的可用性,则可以添加更多的主机,最多为32台。
除了创建一个集群外,改善可靠性的另一种方法是禁止开发者在Web服务器上开发产品。通过建立一台开发服务器(例如dev.example.com),设计者可以在此服务器上发布内容和测试其应用程序。而后能够将所有的授权和开发移交给服务器。
如果设计者在开发服务器(dev.example.com)上安装了FrontPage Server Extensions,用户就可以使用FrontPage连接到一台开发服务器,写入内容以及创建应用程序,而不用将应用程序引入到Web产品服务器上。
一旦数据已准备好用于产品,则使用Site Server 3.0的Content Deployment特性将数据从阶段服务器复制到Web服务器产品上。在三台Web服务器间必须相同复制的单元是Web内容。当设计者需要复制数据时,Content Deployment将很容易地实现该过程,从而可以节省大量时间。
当站点规模增长时,需要为每台服务器设置一个独立的日志文件。如果三台服务器在同一个Web集群中,则必须分析三个单独的日志文件,可以预先地将所有日志导入到一个源中来帮助简化任务。Site Server Usage Analyst给设计者提供了一种简易的方法将这些文件导入到一个源中,而后设计者可以生成定制报告来表示Web站点上的所有通信量。
要获得更高的可靠性和可用性,设计者可以添加另一个集群并将其限制在业务内容客户上。在图1中,该集群称为premium.example.com。这里的策略是将任务紧急的业务请求转换到premium.example.com,而将www.example.com用于一般公众服务。
一旦设计者添加了服务器,创建了开发服务器并且简化了日志,就将会注意到站点变得十分复杂。为了处理增加的复杂性和应用程序数量,设计者可能需要创建其它层,以便维持Web站点的有效性和性能。
3. 创建第二层
当ASP应用程序与Windows 2000组件一起相结合运行时,站点很快会变得更为复杂。ASP应用程序可以被认是为将表示层连接到应用和数据服务层的中介。ASP提供了一种丰富而强有力的开发环境。但如果真的要增加应用程序的整体性能,应考虑添加COM+组件。
使用ASP应用程序调用一个包含用户业务逻辑的组件,该组件驻留在第二层的应用程序服务器上。一个应用程序服务器可以简单地是一个Windows 2000 Server,它主要为组件提供处理器功能。
至此,驻留在第一层Web服务器上的ASP应用程序调用第二层应用程序服务器来处理业务逻辑。该处理过程的一部分会请求组件从位于第三层的后端数据库中提取数据。
4. 创建第三层
为了在第三层获得高可用性,设计者需要安装Cluster Service。为了存储所有组成第三层的后端数据,大多数企业级用户都需要一台高端对称多处理(Symmetric Multi Processing ,SMP)服务器(例如,一个8个处理器的SMP,带有4GB的RAM),以运行SQL Server 7.0等大型关系数据库。Cluster Service 可以处理任务紧急的数据库管理、文件和Intranet数据共享、消息机制以及通用业务应用程序。
最好再添加一台服务器用于故障处理,而不是仅仅依靠一台高端Windows 2000 Server。
综合起来,这两台服务器为访问请求提供了更高的可用性,并且简化了管理数据和应用程序的任务。Cluster Service不仅允许设计者将两台服务器连接到一个集群中,而且也可以自动地检测并恢复服务器和应用程序故障。另外,它可以巧妙地处理服务器操作的工作负载,使管理员在不必关闭服务器的情况下进行维护规划。
Cluster Service具有内置机制,可以处理服务器的故障。如果Cluster Service检测到服务器故障,则它会自动地将资源(例如磁盘驱动器和IP地址)的所属关系从一台故障服务器传送到另一台正常的服务器上。而后它在正常服务器上重启故障服务器上的工作负载。从检测到一个故障到重启另一台服务器的整个过程,通常花费不到一分钟的时间。
如果一个单独的应用程序故障(但服务器没有故障),则Cluster Service将试图重启同一服务器上的该应用程序。如果仍然失败,则Cluster Service将该应用程序的资源转移到另一台服务器上,并且在该服务器上重启该应用程序。关于Cluster Service的详细信息,请参考Windows 2000 Advanced Server在线文档。
5. 总结
现在可以很快地概括一下整个网站的创建历程。在本示例情况下,设计者可以从一台单一的IIS 5 Web服务器开始,在这里可以完成各种必要的事情。由于用户的应用程序需要很高的可用性、可伸缩性和性能,因此设计者可以创建一个三层Web体系结构,并且对每个层次使用具有高可用性的Microsoft技术。而后可以使用Web Application Stress Tool测试单台服务器并实现它。为了获得更高的可用性,则需要创建Web集群。
为此,应先计算出三台服务器已经足够了。而后安装Network Load Bulancing,并且这三台服务器实质上被看作一台服务器。接下来,设计者应该添加第四台Web服务器作为开发阶段服务器,以便用户可以发布内容到该服务器上。为了复制已开发的内容,设计者在阶段服务器和Web服务器产品上应使用Site Server 3.0 的Content Deployment特性。这样,用户就可以通过FrontPage连接到开发服务器(dev.example.com),并且设计者能够容易地将内容复制到Web服务器产品上。
为了增强第二层的性能,设计者要添加一个COM+应用程序,并且使用来自第一层的ASP应用程序来调用来自第二层的预编译组件。另外,这些第二层组件会调用第三层数据服务。
运行SQL 7.0的一个高端SMP服务器组成了系统的第三层。为了获得高的可用性,设计者应添加Cluster Service来确保系统是一个具有容错能力的故障接管系统。这种拓扑结构提供了高可用性和可伸缩性,尽管存在可预见的故障(例如服务停止或硬件升级)或者不可预见的故障(例如硬件故障或软件完整性丢失)。
如果设计者是一个ISP,则可以为自己的企业级用户使用该体系结构,该企业级用户可以运行电子商务站点,或其他任务紧急的Web商务应用程序。设计者也可以将该拓扑结构用于普通或日常的Web站点,其中会有许多用户参与到这一集群中。