数年以来,Microsoft一直致力于对自身服务器解决方案的伸缩能力、可用性与可靠性进行扩展。群集技术已被证明是实现这一目标的有效途径,Microsoft充分支持群集技术理念,并致力于使其成为Microsoft操作系统及相关产品的集成化组成部分之一。随着Windows 2000的正式发布,Microsoft群集解决方案已经逐渐步入成熟阶段。
可伸缩能力、可用性与可靠性
群集是一组通过协同工作方式运行同一套应用程序并针对客户端及应用程序提供单一系统映像的独立计算机。群集技术的目标在于通过多层网络结构进一步提高伸缩能力、可用性与可靠性。
可伸缩性是指一台计算机在维持可接受性能的前提下处理不断提高的工作负载的能力。硬件设备可伸缩性(内含式扩展,根据Microsoft的说法)依赖于通过具备扩展能力的大型计算机来执行各项操作。软件产品可伸缩性(外延式扩张)依赖于通过协同工作方式组织在一起的多台计算机所形成的群集,它与RAID驱动器阵列是两种不同概念。实际上,Microsoft使用了不太正规的术语计算机冗余阵列(RAC)来称呼自身的外延式扩张群集。就像可以通过向RAID阵列中添加磁盘的方式来提高性能一样,您同样可以通过向外延式扩张群集中添加节点的方式来提高性能。
可用性与可靠性是两种紧密相关但又略有不同的概念。可用性是指存在质量、备用能力、获取简便性以及可访问能力。可靠性则是指系统牢固程度。即便是最为可靠的系统总有一天也会出现问题。硬件设备制造商通过在诸如磁盘驱动器、电源供应设备、网络控制器和冷却风扇这样的关键技术领域中提供冗余的方式提前针对可能出现的故障采取准备措施。然而,在一台计算机上所提供冗余无法为用户避免应用程序故障。如果某台服务器上的数据库软件出现故障,那么,尽管这台服务器可能非常可靠,但通过软件与服务器相互结合方式提供的功能仍将无法使用。由此可见,单台计算机根本无法胜任由群集承担的所有必要可伸缩性、可用性及可靠性挑战。
群集能够模拟RAID阵列方式来提供可用性与可靠性。在诸如RAID 1或RAID 5这样的容错磁盘配置方案中,所有磁盘均按照冗余阵列方式协同工作。如果某块磁盘出现故障,您可以将其拔下并插入一块新的磁盘,阵列中的其余部分将继续运行--无需配置,无需安装,最重要的是,不会造成停机。RAID系统自动对新的驱动器进行重建,以便使其能够与其它驱动器协同工作。与此类似,当群集中的某台计算机出现故障时,您只需使用一套新的系统对其进行替换,整个群集将继续保持运行状态。某些群集软件能够自动对服务器进行配置并将其集成到群集当中--所有相关操作均在群集处于可用状态下完成。
四种群集解决方案
Microsoft提供了四种基本群集技术:Microsoft群集服务(MSCS)、网络负载平衡(NLB)、组件负载平衡(CLB)和Application Center 2000。这些服务通过三种解决方案提供:MSCS、NLB和Application Center。CLB是Application Center的组成部分之一,并且只能通过Application Center加以应用。NLB既可以通过Application Center使用,也可以作为一种独立解决方案使用。Windows 2000 Advanced Server与Windows 2000 Datacenter Server本身包含MSCS和NLB,但您必须单独购买Application Center。
表1总结了这四种群集技术在不同Windows 2000 Server与Windows NT Server 4.0产品家族成员中的可用性。正如您所想象的那样,这些技术中没有一种适用于Windows 2000 Professional或Windows NT Workstation 4.0。表2列出了某些群集技术特征。在本文后部进行技术对比时,您可以参考这张表格。
| MSCS
| NLB
| CLB
| Application Center
|
---|
Win2K Server | 不可用 | 不可用 | 支持(需要使用AppCenter | 支持(需要使用第三方IP负载平衡工具) |
Win2K AS | 包含(最多2节点) | 包含 | 支持(需要使用AppCenter) | 支持(使用NLB) |
Datacenter | 包含(最多4节点) | 包含 | 支持(需要使用AppCenter) | 支持(使用NLB) |
NT Server 4.0 | 不可用 | 支持(称为WLBS) | 不可用 | 不可用 |
NT Server 4.0, 企业版 | 包含(最多2节点) | 支持(称为WLBS) | 不可用 | 不可用 |
表2 群集技术特性对照
| MSCS
| NLB
| CLB
| Application Center
|
---|
用途 | 应用程序故障恢复与故障返回 | IP通信负载平衡 | COM+对象负载平衡 | 创建并管理Web区 |
优势 | 可用性与可管理能力 | 可用性与可伸缩性 | 可用性与可伸缩性 | 可用性、可伸缩性与可管理能力 |
每个群集中的最大节点数量 | 2个(针对Win2k AS)或4个(针对Datacenter) | 32 | 16 | 16 |
群集类型 | 共享存储机制 | 无共享资源 | 无共享资源 | 无共享资源 |
状态信息 | 有状态 | 无状态(如果需要的话,可以支持有状态连接) | 无状态 | 无状态 |
是否需要对服务器应用程序进行修改 | 需要 | 不需要 | 不需要 | 不需要 |
是否需要使用专用硬件设备 | 需要 | 不需要 | 不需要 | 不需要 |
是否独立 | 是 | 是 | 否(需要使用AppCenter) | 是 |
Microsoft群集服务
最初代号为Wolfpack且先后被称为Microsoft群集服务器与Microsoft群集服务的MSCS是Microsoft在NT群集技术领域中的首次重拳出击,它是公认的最佳Microsoft群集解决方案。在MSCS群集中,MSCS软件最多可以同四台运行在高速网络上的物理计算机建立连接。通常情况下,群集中的计算机能够按照“活动--活动”方式共享相同的存储子系统与功能,这意味着所有群集计算机(节点)均可主动通过共享负载的方式协同完成工作,并在某个节点出现故障时分担它的工作。图1显示了一个4节点MSCS群集。
图1 利用Windows 2000 MSCS实现的4节点群集
MSCS的主要用途是通过自身提供的容错能力提高应用程序可用性。容错能力是指将相关处理过程从某个节点上的故障应用程序(由于硬件设备故障或软件错误等原因所导致)移植到群集中其它健康节点上的群集功能。当故障应用程序得到恢复后,群集应当能够对原先的群集节点实现“故障返回”。MSCS能够在不丢失任何与故障应用程序相关数据的前提下对群集上所运行的应用程序进行故障恢复与故障返回管理,并且能够在故障恢复过程中维护用户及应用程序状态。这种类型的群集功能被称作有状态群集功能。与此相反,NLB、CLB和Application Center在增强可用性的同时,提供无状态群集功能与动态负载平衡能力(我将在稍后部分中详细讨论这些内容)。
对于诸如电子邮件服务器、数据库应用程序之类的应用程序,MSCS是一种良好的运行方式。假设您决定在一个4节点MSCS群集上运行Microsoft Exchange 2000 Server。当安装MSCS软件以及适用于群集的Exchange 2000版本后,您可以对群集进行配置,以便使Exchange 2000能够在主要节点发生故障时在备份节点上进行故障恢复。当故障发生时,主服务器上肯定存在处于打开状态的用户会话,然而,MSCS能够在不丢失任何数据的情况下快速、自动的完成故障恢复。备份节点将从故障节点上接替工作负载及相关数据,并继续为用户提供服务。
MSCS同时还允许用户在应用程序升级过程中继续进行工作。您可以采取滚动升级方式(例如每次在一个群集节点上升级应用程序并确保其它节点上的应用程序继续处于可用状态)而不必在升级过程中停止使用应用程序。举例来说,假设您拥有一个双节点群集。其中节点1运行Exchange 2000,节点2运行Microsoft SQL Server,您希望对这个群集进行配置,以便使Exchange 2000和SQL Server能够在必要情况下相互实现故障恢复。当需要对SQL Server进行升级时,您可以通过MSCS群集管理器在节点2上启动SQL Server故障恢复功能。当节点1接替SQL Server运行任务(同时继续运行Exchange 2000)时,您便可以在节点2上对SQL Server进行软件升级。当升级工作完成后,您可以通过故障返回方式将SQL Server从节点1重新移至节点2上运行,并对节点1上的SQL Server重复执行相同的软件升级操作。当节点1同样完成升级后,整个SQL Server软件便在未影响用户使用的情况下完成了升级任务。
与其它三种Microsoft群集解决方案不同,您通常无法利用MSCS面向更多用户对应用程序进行扩展。MSCS群集无法向NLB、CLB和Application Center那样通过无状态非共享方式在节点之间提供动态负载平衡能力或实现应用程序分布式运行。实际上,利用MSCS实现应用程序伸缩能力的唯一可行方式便是在安装过程中手工将应用程序分配给不同群集资源。举例来说,如果需要在Exchange 2000平台上为5000名用户提供服务,您可以应用2节点活动-活动群集并在每个节点上为2500名用户提供服务。通过这种方式,您不但可以获取通过两台服务器为用户提供服务所实现的性能优势,同时还能在故障情况下实现必要的可用性。但是,当故障恢复发生时,剩余节点必须能够在故障节点恢复使用前单独为所有5000名用户提供服务。
网络负载平衡
原先称作Windows NT负载平衡服务(WLBS)的NLB能够在多个运行NLB软件的节点上对进入系统的IP请求负载进行合理分配。NLB能够为诸如Web服务器之类基于IP协议的应用提供伸缩性与可用性。随着用户针对服务器资源的需求量不断增大,NLB允许您添加用以处理工作负载的服务器。举例来说,通过利用NLB实现其面向Outlook Web Access(OWA)的基于Microsoft IIS通信前端,Exchange 2000服务器的负载压力得以显著缓解。NLB群集会将客户端请求路由至一台或多台后端服务器上。如果某个NLB节点出现停机故障,其它节点将自动承担由其遗留下来的额外负载,而用户则不会感觉到任何服务中断现象。
NLB底层软件是一种位于NIC与TCP/IP之间的网络设备接口规范(NDIS)驱动程序。您应当在NLB群集中的每台服务器上安装这种驱动程序。所有NLB节点均共享同一个代表所需网络资源(如Web服务器)的虚拟IP地址。所有NLB服务器均监听用户请求,但其中只有一台服务器对这些用户请求进行响应。基于快速Hash算法的负载平衡架构负责合并客户端IP地址与端口号,并确定由哪台服务器进行响应。您可以指定某种相似性规则,以便能够在不同服务器上分配不同的负载量(例如,您可以指定某些服务器应当获取多于其它服务器工作负载)。通过一种心跳特性,所有NLB节点均可及时群集变化(例如新增节点或节点故障)情况。当群集发生变化时,NLB将启动一个汇聚过程,以便在群集中自动协调变化情况并以透明方式重新对进入系统的工作负载进行分配。
NLB的最初起源要追溯到1998年Microsoft收购总部位于俄勒冈州的Valence Research开始。Valence所开发的Convoy群集软件便是后来的WLBS(NT Server 4.0与NT Server 4.0企业版中的一种插接产品)。在Windows 2000中,尽管Microsoft进一步增强了WLBS的功能特性并对其进行了重新命名,但其核心技术仍旧没有发生变化。NLB是Windows 2000 Advanced Server与Datacenter网络服务中的一种集成化部件。
只要在各自独立的计算机上运行,Windows 2000中的MSCS与NLB便可良好的实现协同工作--具体示例请参见图2所显示的配置方案。由于MSCS与NLB之间存在潜在的硬件设备共享冲突,因此,Microsoft不建议同时也不支持在同一台计算机上运行MSCS与NLB。如需获取更多关于MSCS和NLB的安装信息,请查看题目为MSCS与NLB之间的Windows 2000交互能力的Microsoft文章。
图2 以单一虚拟IP服务器方式运行的n节点NLB群集
组件负载平衡
对于Windows 2000而言,CLB是一种全新事物。同样,对于Windows 2000来说,作为下一代COM技术的COM+也是一种全新事物。COM+将COM、Microsoft事务服务器(MTS)以及相关系统服务有机结合在一起,从而使Windows 2000成为一种设计、开发、部署与维护基于组件应用的出色平台。简而言之,COM+是一种包含一系列相关系统服务(包括允许您在多个系统之间对组件进行分布的服务)的COM技术。其中一种COM+服务能够实现针对COM+对象的负载平衡访问方式。CLB只不过是一种负载平衡群集功能--即通过多台服务器共享激活与执行COM+对象所产生的工作负载。
与NLB相似,针对CLB的需求同样来源于可用性与伸缩性需求。当您运行由COM+对象所组成的关键应用时,应用程序或服务器故障将导致严重后果。CLB能够确保应用程序在出现故障的情况下继续运行,并避免使用户感觉到服务性能有所下降。此外,某些COM+对象规模相当庞大且功能相当复杂,在单一服务器上运行这些COM+对象以及诸如IIS之类的其它关键应用会严重影响系统性能。为在这种情况下提供可伸缩能力,您可以将COM+对象从IIS服务器上移走,并将其合理分布在自身CLB群集中的多台服务器上。
假设您是一个拥有自己商务Web站点的计算机制造商,您的商务站点负责为用户提供产品与技术信息、产品技术支持以及网上订购服务。遍布全球各地的客户每天24小时不间断的使用您的产品,因此,您的Web站点必须随时可用并保持良好运行状态。为此,您可以采用图2所显示的方式在具备后端MSCS数据库群集访问能力Web服务器上运行NLB。然而,如果您所提供的服务使用了大量基于COM+对象编码方式的实现逻辑,那么,尽管这些对象可以在Web服务器上运行,但是,由于运行Web服务器的计算机同时还必须处理COM+对象,因此,Web服务器的响应时间将非常缓慢。此时,您便可能需要使用CLB。
图3描述了如何在具备高度可用性与伸缩能力的Web站点上部署CLB群集。CLB能够针对在应用程序中间层提供COM+对象的商务逻辑实现负载平衡。(CLB群集需要Application Center提供隐含支持,我们将在“Application Center”一节中详细解释相关信息,现在,您只需了解为何需要使用CLB即可。)
图3 通过CLB实现针对COM+对象负载平衡访问方式
CLB通过结合使用服务器响应时间与循环算法的方式来确定由哪台服务器处理下一个请求。CLB按照预先设置好的时间间隔定期在群集中对COM+服务器进行投票,以确定服务器响应速度(服务器响应时间直接反映出它们的繁忙程度)。CLB根据响应时间对服务器进行排序,具备最短响应时间的服务器排在队头,并负责对下一个COM+激活请求进行处理。此后,在下一个投票间隔到来之前,CLB将按照服务器在列表中的排列顺序为其分配工作。
由于上述所有处理工作均在网络上实时完成,您可以看出,如果在速度较慢或较为拥挤的网络上添加CLB,则可能导致网络竞争问题。因此,您应当在至少具备100 Mbps传输速率的高速干线网络上部署CLB群集。通常情况下,您不应在承载其它网络通信内容常规企业网络上部署CLB群集。
在CLB群集中分布COM+对象的方式并非适用于所有情况,您必须在应用需求分析基础上做出是否使用CLB的决定。群集功能增加了与贯穿整个网络的客户端请求相关的负载以及为满足客户端请求而选择服务器并激活COM+对象所产生的负载。在某些情况下,由于应用程序只使用少量轻量级COM+对象,在Web服务器本地实现对象实例化的简单方式可能会提供更高性能。需要考虑使用CLB的应用情境包括:
- 构成商务逻辑的COM+对象相对比较“繁杂”且必须在高速服务器上运行。
- 安全性是主要关注的问题之一,并且您希望通过将其置于额外防火墙后部的方式独立COM+对象。
- 出于开发或设计原因,您的COM+应用程序被分为多个层次,并且您需要在独立的层次上使用CLB。
CLB在所有Windows 2000 Server产品家族成员中均无法使用,同时,您也无法通过独立产品方式购买CLB。最初,Microsoft曾经有意将CLB包含在Windows 2000 Server产品家族中,但在1999年9月,Microsoft将其从Windows 2000 Release Candidate 2(RC2)中分离出来,并放入到一种称为Application Server的全新产品中,因此,获取CLB的唯一方式便是使用Application Server。
Application Center
Application Center是Microsoft .NET Enterprise Server产品家族成员的组成部分之一,其前身为Windows Distributed interNet Applications(Windows DNA)服务器。Application Center的主要目的在于实现针对Web区(例如提供相同Web内容且相互协作的多台物理Web服务器)的单一管理点,从而提供统一用户界面(UI)并利用NLB与CLB实现负载平衡。通过使用Application Center,您可以创建新的群集、加入现有群集、添加或删除群集成员、部署新增内容、配置负载平衡并监视群集性能。其最终结果是为Web区提供伸缩能力、易用性以及高度可靠性,并使其在外部用户眼中表现为一台单一Web服务器。随着越来越多的关键应用开始向Web靠拢,这些功能特性的重要性也在与日俱增。
如需了解完整的Application Center拓扑结构,以及与其协同工作的所有Microsoft群集技术,请再次查看图3。NLB群集可以是IIS服务器所组成的群集,CLB群集可用于提供商务逻辑。两者相互结合便构成了Application Center Web群集,而数据库群集则可通过MSCS实现。
假设您拥有一个电子商务站点且正在规划进行大规模产品滚动升级,在此期间,有许多客户希望通过该站点购买您的产品。这种情况将显著增加Web站点负载,然而您又无法确定这种增幅到底有多大。您可以随时根据需要添加新的服务器,但针对这些服务器的设置工作却非常复杂。就产品滚动升级而言,您可以像在RAID阵列中插入磁盘驱动器那样通过向Web区中添加服务器的方式轻松扩展Web站点性能。这种应用情境正是RAC理念所适用的情况。
Application Center提供了用以创建群集、向群集中添加新增服务器、部署新增内容并配置群集成员的向导程序。在创建新群集时,您需要定义一台群集控制器,这台群集控制器不仅属于群集成员,同时还负责维护所有配置信息。此后,您便可以指定群集中的其它成员。当您完成上述工作时,Application Center将针对每个新增群集成员部署COM+设置、CryptoAPI设置、注册表健值、Windows管理设施(WMI)设置、文件系统信息、IIS元数据库设置以及Web服务器内容。最终,您将获得一个克隆群集,并且,您可利用Application Center管理器轻松添加或删除群集成员。此外,Application Center还将通过透明方式完成单调乏味的NLB配置与部署工作。
Application Center还将支持除NLB以外的其它第三方IP负载平衡工具。在撰写本文时,Microsoft正在为Cisco System公司的LocalDirector、F5 Network公司的BIG-IP以及Alteon WebSystem公司的ACEdirector提供支持。然而,Application Center并未像集成NLB管理方式那样集成针对这些负载平衡工具的管理操作,因此,您需要通过执行额外工作的方式对这些第三方负载平衡工具进行维护。
您可以在以下版本的Windows 2000操作系统平台上安装包含创建Application Center群集所需全部必要组件的完整版本Application Center:
- Win2K Server Service Pack 1(SP1)
- Win2K AS SP1
- Datacenter SP1
为支持Application Center,您必须具备Win2K SP1。否则,您将只能安装用以对Application Center和IIS进行远程管理的Application Center管理器。以下版本的Windows 2000及Windows NT操作系统支持Application Center管理器:
- Win2K Professional
- Win2K Server
- Win2K AS
- Datacenter
- NT Workstation 4.0 SP6或更高版本(只适用于x86处理器)
- NT Server 4.0 SP6或更高版本(只适用于x86处理器)
在阅读本文时,您便可以通过Microsoft新型.NET Enterprise Server产品的方式独立购买Application Center了。
群集技术与Microsoft .NET
您可能希望了解Microsoft群集解决方案如何适应公司的未来业务发展需要。
Windows服务已被授予Microsoft .NET这一全新名称。图4将Windows 2000和Windows DNA与Windows .NET和.NET平台进行了对比。Microsoft群集解决方案适用于两种Microsoft .NET领域:Windows .NET(MSCS)和.NET Enterprise Server(NLB、CLB、Application Center)。Windows .NT代表了Windows 2000操作系统的演变过程,其接下来的两个版本代号分别为Whistler和Blackcomb。.NET Enterprise Servers包含以下产品(其中大部分将包含在BackOffice中且具备集成化XML支持能力):
- Exchange 2000
- SQL Server 2000
- BizTalk Server 2000
- Application Center 2000
- Host Integration Server 2000
- Commerce Server 2000
- Internet Security and Acceleration(ISA) Server 2000
图4 从Windows DNA到Microsoft .NET平台的演变过程
Windows.NET和.NET Enterprise Servers是Microsoft在向.NET平台前进过程中所需完善与增强两种基本组件。Microsoft非常重视Windows的伸缩性、可用性与可靠性。在Microsoft以.NET作为商务平台进一步向Internet领域进军的过程中,提供这些特性也随之显得更为重要。
显然,诸如MSCS、NLB、CLB以及Application Center之类强大群集技术的出现对于Microsoft在关键商务应用支持领域能否取得成功起着至关重要的作用。我希望看到这些群集技术--特别是Application Center以及Microsoft在年初专业开发者大会上所介绍的诸如活动服务器页面+(ASP+)负载平衡这样的新型.NET技术--得到进一步增强与扩展。请立即占用部分时间来理解这些强大群集解决方案的工作原理以及它们可能帮助您解决的问题。
作为BMC Software公司PATROL商务单元的程序主管,Greg Todd负责为公司制定Windows 2000解决方案技术发展方向。他从1993年起便开始从事与Windows NT及相关技术有关的工作。如欲同他取得联系,敬请致电:gregt@bmc.com。
相关Microsoft Web站点
“探索Windows群集技术”
http://www.microsoft.com/windows2000/guide/server/features/clustering.asp
“网络负载平衡技术概况”
http://www.microsoft.com/technet/win2000/nlbovw.asp
http://www.microsoft.com/windows2000/library/howitworks/cluster/nlb.asp
“Windows 2000与组件负载平衡”
http://www.microsoft.com/windows2000/news/fromms/clb.asp
“Microsoft Application Center 2000”
http://go.microsoft.com/fwlink/?linkid=591
“Windows 2000 Advanced Server简介”
http://www.microsoft.com/windows2000/guide/server/solutions/overview/advanced.asp
“Microsoft Windows 2000 Datacenter Server”
http://www.microsoft.com/windows2000/guide/datacenter/overview/default.asp
“Windows DNA Application Services”
http://www.microsoft.com/net/
“Microsoft Windows DNA”
http://www.microsoft.com/dna/default.asp
“.NET平台与Windows DNA演变过程”
http://www.microsoft.com/BUSINESS/products/webplatform/evolution.asp
“Microsoft .NET”
http://www.microsoft.com/net/
“Microsoft PDC 2000”
http://msdn.microsoft.com/events/pdc/
Micorsoft公司希望本文所提供的信息能够对您有所帮助。在使用本文所包含信息的过程中,您将对自己的行为承担全部责任。本文中的所有信息均以“概不保证”的形式提供,Microsoft公司不对特定用途、标题或非侵权行为的准确性、完整性与适应性做出任何明确或隐含担保,本文提到的所有第三方产品或信息均未得到Microsoft公司的授权、推荐、支持或保证。Microsoft公司不对因使用这些信息对您所造成的损害承担任何直接、间接、特殊、附带或相应而生的法律责任,即便事先曾经考虑到造成这种损害的可能性。当本文所提到的各种产品价格发生变动时,请恕概不通知。