Windows .NET Server 2003 中的 Microsoft 群集服务 (MSCS) 简介
Mohan Rao Cavale
Microsoft Corporation
2002年11月
适用于: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 秒钟内在其余服务器中重新分配客户端流量。
第三个主要的 Microsoft 群集服务组件是资源 DLL。资源监视器和资源 DLL 使用资源 API 进行通信。资源 API 是用于管理资源的入口点、回叫函数和相关结构及宏的集合。
对于群集服务而言,资源是任何可进行管理的物理或逻辑组件,例如磁盘、网络名、IP 地址、数据库、站点、应用程序和任何其他可以联机和脱机的实体。资源可按类型进行组织。资源类型包括物理硬件(例如磁盘驱动器)和逻辑项(例如 IP 地址、文件共享和一般应用程序)。
每个资源都使用资源 DLL,它主要是资源监视器和资源之间的被动转换层。资源监视器调用资源 DLL的入口点函数查看资源的状态并使资源联机和脱机。资源 DLL 负责通过便利的 IPC 机制与其资源进行通信,以实现这些方法。
实现其自身资源 DLL 与群集服务通信的应用程序以及使用群集 API 请求和更新群集信息的应用程序都被定义为群集相关应用程序。不使用群集或资源 API 以及群集控制代码函数的应用程序和服务都不识别群集,也无法识别群集服务是否正在运行。这些群集无关应用程序通常作为一般应用程序或服务进行管理。
群集相关和群集无关应用程序都可以在群集节点上运行,并且都可以作为群集资源进行管理。但是,只有群集相关应用程序可以利用群集服务通过群集 API 提供的功能。开发群集相关应用程序需要建立自定义资源类型。通过自定义资源类型,开发人员可以使应用程序在群集发生各种事件(例如,节点即将脱机,因此会关闭数据库连接)时,做出必要的响应并采取措施。
对于大多数需要在群集中运行的应用程序,最好花费一些时间和资源开发自定义资源类型。可先在群集环境中对应用程序进行测试,而不必修改应用程序的代码或创建新的资源类型。在 Windows .NET Server 2003 中,未经修改的应用程序可以作为“群集相关”应用程序在基础级别运行。群集服务专为此用途提供了一般应用程序资源类型。
完整脚本列表
Option Explicit
Main
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
主子例程。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Main
Dim oGroup
Dim oCluster
Dim oResource
' 创建 Cluster 对象。
Set oCluster = CreateObject( "MSCluster.Cluster" )
' 打开群集。空字符串表示打开本地群集。
oCluster.Open( "" )
' 创建或打开组。
AddGroup oCluster, oGroup
' 创建或打开资源。
AddResource oGroup, oResource
' 使资源联机,并在 10 秒内等待
' 它实际恢复联机状态。
oResource.Online 10
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 此子例程将创建或打开组。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub AddGroup( oCluster, oGroup )
Set oGroup = oCluster.ResourceGroups.CreateItem( "高可用性记事本" )
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
此子例程将向组添加资源。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub AddResource( oGroup, oResource )
Dim oGroupResources
Dim oProperties
Dim oCLProperty
Dim oCDPropery
Set oGroupResources = oGroup.Resources
Set oResource = oGroupResources.CreateItem( "Notepad", "Generic
Application", 0 ) 'CLUSTER_RESOURCE_DEFAULT_MONITOR
Set oProperties = oResource.PrivateProperties
' 设置一般应用程序的属性
oProperties.Item("CommandLine") = "notepad"
oProperties.Item("CurrentDirectory") = "c:\"
oProperties.Item("InteractWithDesktop") = 1
oProperties.SaveChanges
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 等待指定的时间。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Sleep( PauseTime )
Dim Start
Start = Timer
Do While Timer < Start + PauseTime
Loop
End Sub
Microsoft 群集服务使用价格适宜的标准硬件提供高可用性,同时最大程度地利用计算资源。Windows .NET Server 2003 中的群集服务提供了强大的工具,使您的应用程序具有较高的可用性。对于某些开发人员而言,编写群集相关应用程序可能要花费很大成本,且难度较大。为了向开发人员提供使用低投入实现集群的好处,群集服务提供了一般应用程序资源类型,允许在群集内对应用程序进行便捷配置。尽管一般应用程序资源类型可能不会提供生产应用程序所需的复杂性,但是它提供了一个检查方法,可以查看应用程序在群集内的执行情况。