在任何情况下,仅仅交付一个具有丰富功能集的高质量应用程序是不够的,在越来越多的时候,它还必须满足高可用性标准。您是否因为群集技术看起来过于高深、难于理解和使用而没有使应用程序再提高一个层次? 随着 Microsoft 的群集服务在 Windows NT? 4 中引入以及在 Windows Server 2003 系列中正式提供,开发人员可使用一些简单工具在群集环境中部署应用程序。这些工具能够将群集中的应用程序登记为一般应用程序,并且能够通过编写 Windows 脚本的方式来控制应用程序的配置。
本文着重介绍三种支持群集的 Microsoft 服务器技术之一:群集服务。我们将说明如何在群集环境中对应用程序轻松执行性能检查,而无需更改应用程序代码。
三种群集技术
Microsoft 服务器提供了三种支持群集的技术: 网络负载平衡 (NLB)、组件负载平衡 (CLB) 和 Microsoft 群集服务 (MSCS)。
网络负载平衡
网络负载平衡充当前端群集,用于在整个服务器群集中分配传入的 IP 流量,是为电子商务 Web 站点实现增量可伸缩性和出色可用性的理想选择。 最多可以将 32 个运行 Windows Server 2003 系列产品的计算机连接在一起共享一个虚拟 IP 地址。NLB 通过在群集内的多个服务器之间分配其客户端请求来增强可伸缩性。随着流量的增加,可以向群集添加更多的服务器,任何一个群集最多可容纳 32 个服务器。NLB 在为用户提供连续服务的同时还提供了高可用性,即自动检测服务器故障,并在 10 秒内在其余服务器中重新分配客户端流量。
MSCS 故障转移功能是通过群集中连接的多个计算机中的冗余实现的,每台计算机都具有独立的故障状态。为了实现冗余,需要在群集中的多个服务器上安装应用程序。但在任一时刻,应用程序只在一个节点上处于联机状态。当该应用程序出现故障或该服务器停机时,此应用程序将在另一个节点上重新启动。 Windows Server 2003 数据中心版支持在一个群集中最多包含 8 个节点。
实现其自身资源 DLL 与群集服务通信的应用程序以及使用群集 API 请求和更新群集信息的应用程序都被定义为识别群集的应用程序。不使用群集或资源 API 以及群集控制代码函数的应用程序和服务都不识别群集,也不知道群集服务在运行。这些不识别群集的应用程序通常作为一般应用程序或服务进行管理。
识别群集的应用程序和不识别群集的应用程序都可以在群集节点上运行,并且都可以作为群集资源进行管理。但是,只有识别群集的应用程序可以利用群集服务通过群集 API 提供的功能。开发识别群集的应用程序需要建立自定义资源类型。通过自定义资源类型,开发人员可以使其应用程序在群集内发生各种事件(例如,节点即将脱机,因此会关闭数据库连接)时,作出响应并采取必要的措施。
对于大多数需要在群集中运行的应用程序,最好投入一些时间和资源开发自定义资源类型。不过,可以先在群集环境中对应用程序进行测试,而不必修改应用程序的代码或创建新的资源类型。在 Windows Server 2003 系列中,未经修改的应用程序可以作为“不识别群集的”应用程序以基本级别运行。群集服务专为此用途提供了一般应用程序资源类型。
Microsoft 群集服务使用价格适宜的标准硬件提供高可用性,同时最大程度地利用计算资源。Windows Server 2003 系列中的群集服务提供了强大的工具,使您的应用程序具有较高的可用性。对于某些开发人员而言,编写识别群集的应用程序可能要付出很大的代价,且难度较大。为了使开发人员能够以较低的投入来使用集群,群集服务提供了一般应用程序资源类型,允许在群集内对应用程序进行简单配置。虽然一般应用程序资源类型可能不会提供生产型应用程序所需的复杂性,但它提供了一种测试方法,可以查看应用程序在群集内的执行情况。