日期:2008-04-03  浏览次数:20549 次

适用于:Microsoft® Windows® .NET Server 2003 Enterprise Edition

Microsoft Windows .NET Server 2003 Datacenter Edition
Microsoft 群集服务

摘要:了解如何在群集环境中对应用程序轻松执行性能检查,而无需更改应用程序代码。本文着重介绍三个支持群集的 Microsoft 服务器技术之一:群集服务。本文包含英文的屏幕拍图。

目录
简介
三种群集技术
通过 Microsoft 群集服务实现的故障转移功能
群集服务体系结构
群集无关应用程序
高可用性记事本
小结
简介
在任何情况下,仅仅交付一个具有丰富功能集的高质量应用程序是不够的,越来越多的情况下它还必须满足高可用性条件。您是否因为群集技术看起来过于高深,难于理解和使用而没有将应用程序升级?随着 Microsoft® 群集服务(在 Windows® NT™ 4 中引入,在 Windows .NET Server 2003、Enterprise Edition 和 Datacenter Edition 中可用)的出现,开发人员可使用一些简单工具在群集环境中部署应用程序。这些工具能够将群集中的应用程序登记为一般应用程序,并能够借助 Windows 脚本控制应用程序的配置。

群集将两个或多个服务器连接在一起,使其对客户端呈现为单个计算机。将服务器连结到一个群集中可以分担负载、启用单点操作/管理,并为满足日益增长的需求进行相应的调整提供了途径。因此,通过群集可以生成高可用性的应用程序。

本文着重介绍三个支持群集的 Microsoft 服务器技术之一:群集服务。我们将介绍如何在群集环境中对应用程序轻松执行性能检查,而无需更改应用程序代码。

三种群集技术
Microsoft 服务器提供了三种支持群集的技术:网络负载平衡 (NLB)、组件负载平衡 (CLB) 和 Microsoft 群集服务 (MSCS)。

网络负载平衡
网络负载平衡充当前端群集,用于在服务器群集中分配传入的 IP 流量,是为电子商务 Web 站点实现增量可伸缩性和显著可用性的理想选择。可将最多 32 个 Windows .NET Enterprise Server 连结在一起共享一个虚拟 IP 地址。NLB 通过在群集内的多个服务器之间分配客户端请求增强了可伸缩性。随着流量的增加,可以向群集中添加更多的服务器,任何一个群集最多可容纳 32 个服务器。NLB 在为用户提供连续服务的同时还提供了高可用性,即自动检测服务器故障,并在 10 秒钟内在其余服务器中重新分配客户端流量。

组件负载平衡
组件负载平衡可以在多个运行站点业务逻辑的服务器之间分配负载。它在最多包含八个等同服务器的服务器集中提供 COM+ 组件的动态平衡。在 CLB 中,COM+ 组件位于单独的 COM+ 群集中的服务器上。激活 COM+ 组件的调用是平衡到 COM+ 群集中的不同服务器的负载。CLB 通过作用于多层群集网络的中间层与 NLB 和群集服务配合工作。CLB 是作为 Application Center 2000 的功能提供的,可与 Microsoft 群集服务在同一组计算机上运行。

群集服务
群集服务充当后端群集,可为数据库、消息以及文件和打印服务等应用程序提供高可用性。当任一节点(群集中的服务器)发生故障或脱机工作时,MSCS 将尝试最大程度地减少故障对系统的影响。



图 1:三种支持群集的 Microsoft 服务器技术

通过 Microsoft 群集服务实现的故障转移功能
MSCS 故障转移功能是通过群集中连接的多台计算机中的冗余实现的,每台计算机都具有独立的故障状态。冗余要求在群集中的多台计算机上安装应用程序。但是,应用程序任何时刻只在一个节点上处于联机状态。当该应用程序出现故障或该服务器停机时,此应用程序将在另一个节点上重新启动。Windows .NET Server 2003 Datacenter Edition 支持在一个群集中最多包含 8 个节点。

每个节点都具有自己的内存、系统磁盘、操作系统和群集资源的子集。如果某一节点出现故障,另一个节点将接管故障节点的资源(此过程称为“故障转移”)。然后,Microsoft 群集服务将在新节点上注册资源的网络地址,以便将客户端流量路由至当前拥有该资源的可用系统。当故障资源恢复联机状态时,MSCS 可配置为适当地重新分配资源和客户端请求(此过程称为“故障回复”)。要使应用程序恢复到发生故障转移时的那一点,节点必须能够访问保持应用程序状态的共享存储器。

请注意,Microsoft 群集服务旨在提供高可用性,而不是真正的容错功能。“容错”一词通常用于描述提供更高级别恢复功能的技术。容错服务器通常使用结合了特定软件的高级硬件或数据冗余,为单个硬件或软件故障提供近乎瞬时的恢复。这些解决方案的成本远远高于群集解决方案,因为必须支付冗余硬件的费用,而冗余硬件只不过闲置在那里等待恢复故障。Microsoft 群集服务使用价格适宜的标准硬件提供优秀的高可用性解决方案,同时最大程度地利用计算资源。

Microsoft 群集服务基于非共享的群集模型。非共享模型规定,尽管群集中有多个节点可以访问设备或资源,但该资源一次只能由一个系统占有和管理。(在 MSCS 群集中,资源是指任何可以联机或脱机、可在群集中进行管理、一次只能由一个节点提供并可在节点之间移动的物理或逻辑组件。)



图 2:Microsoft 群集服务

群集服务体系结构
Microsoft 群集服务包含三个主要组件:群集服务、资源监视器和资源 DLL。此外,群集管理器还允许生成提供管理功能的扩展 DLL。

群集服务
群集服务是核心组件,并作为高优先级的系统服务运行。群集服务控制群集活动并执行如下任务:协调事件通知、方便群集组件间的通信、处理故障转移操作和管理配置。每个群集节点都运行自己的群集服务。

资源监视器
资源监视器是群集服务和群集资源之间的接口,并作为独立进程运行。群集服务使用资源监视器与资源 DLL 进行通信。DLL 处理所有与资源的通信,因此在资源监视器上宿主 DLL 可以保护群集服务免受错误运行或停止工作的资源造成的影响。资源监视器的多个副本可以在单个节点上运行,从而可以将无法预测的资源与其他资源隔离开。

群集服务在需要对资源执行操作时将向分配给该资源的资源监视器发送请求。如果资源监视器的进程中没有可以处理该类型资源的 DLL,则使用注册信息加载与该资源类型相关的 DLL。然后,将群集服务的请求传递至其中一个 DLL 的入口点函数。资源 DLL 将处理操作的详细信息以符合资源的特定需要。

资源 DLL
第三个主要的 Microsoft 群集服务组件是资源 DLL。资源监视器和资源 DLL 使用资源 API 进行通信。资源 API 是用于管理资源的入口点、回叫函数和相关结构及宏的集合。

对于群集服务而言,资源是任何可进行管理的物理或逻辑组件,例如磁盘、网络名、IP 地址、数据库、站点、应用程序和任何其他可以联机和脱机的实体。资源可按类型进行组织。资源类型包括物理硬件(例如磁盘驱动器)和逻辑项(例如 IP 地址、文件共享和一般应用程序)。

每个资源都使用资源 DLL,它主要是资源监视器和资源之间的被动转换层。资源监视器调用资源 DLL的入口点函数查看资源的状态并使资源联机和脱机。资源 DLL 负责通过便利的 IPC 机制与其资源进行通信,以实现这些方法。

实现其自身资源 DLL 与群集服务通信的应用程序以及使用群集 API 请求和更新群集信息的应用程序都被定义为群集相关应用程序。不使用群集或资源 API 以及群集控制代码函数的应用程序和服务都不识别群集,也无法识别群集服务是否正在运行。这些群集无关应用程序通常作为一般应用程序或服务进行管理。

群集相关和群集无关应用程序都可以在群集节点上运行,并且都可以作为群集资源进行管理。但是,只有群集相关应用程序可以利用群集服务通过群集 API 提供的功能。开发群集相关应用程序需要建立自定义资源类型。通过自定义资源类型,开发人员可以使应用程序在群集发生各种事件(例如,节点即将脱机,因此会关闭数据