群集的优点之一是 , 运行在服务器群集上的应用程序和服务可以用虚拟服务器的形式出现在用户和工作站面前。 用户和客户端在连接到以群集化的虚拟服务器形式运行的应用程序或服务时,就如同连接到一台物理性的服务器。事实上,群集中的任何节点都可以接受这样的虚拟服务器连接。用户或客户端不会知道虚拟服务器真正驻留在哪个节点上。
注意:如果某个服务或应用程序不是供用户或客户端应用程序访问的,则它们可以运行在不是以虚拟服务器形式管理的群集节点上。
在群集中可以驻留代表不同应用程序的多个虚拟服务器。图 3 展示了这种情况。
.net/OS/win2003/index4/model3_clip_image002_0002.gif"
图 3 – 虚拟服务器在群集服务器下的实际表观
上图显示了一个含有四个虚拟服务器的 2 节点群集 ; 每个节点有两个虚拟服务器。服务器群集将虚拟服务器作为资源组加以管理,每个虚拟服务器资源组都包含两个资源:一个 IP 地址以及一个同该 IP 地址相对应的网络名称。
应用程序客户端将通过客户端会话同虚拟服务器建立连接。这些客户端会话仅知道由群集服务作为该虚拟服务器的地址发布的 IP 地址。在客户端方面,仅涉及各个网络名称和 IP 地址。对于支持四个虚拟服务器的 2 节点群集,图 4 显示了该群集节点和四个虚拟服务器的客户端情况。
如图 4 所示,客户端只能看到 IP 地址和网络名称,它们无法了解同任何一个虚拟服务器的物理位置有关的信息。这为服务器群集针对以虚拟服务器形式运行的应用程序提供高可用性支持创造了条件。
.net/OS/win2003/index4/model3_clip_image002_0004.gif"
图 4 - 服务器群集的虚拟服务器的客户端情况
一旦应用程序或服务器发生故障,群集服务就会将整个虚拟服务器资源组转移到群集中的另一个节点上。在发生这样的故障时,客户端将会在其同该应用程序的会话中检测到故障,并且试图用与先前连接完全一致的方式进行重新连接。由于群集服务在恢复操作中可以简单地将虚拟服务器的公开 IP 地址映射到群集中幸存的节点,因此客户端的上述努力将可以获得成功。客户端会话不必知道相关的应用程序现在是否已实际驻留到了群集中的不同节点上就可以重建同该应用程序的连接。
注意:虽然这可以为应用程序或服务提供高可用性,但同发生故障的客户端会话有关的会话状态信息将丢失,除非该应用程序在设计上或在配置上会将客户端会话数据存储在磁盘上以备在应用程序恢复期间使用。服务器群集虽然可以实现高可用性,但不能提供应用程序容错,除非应用程序自身支持容错行为。在存储客户端数据以便实现客户端会话故障恢复的应用示例中, Microsoft 的动态主机配置协议 (DHCP) 服务算是其中的一个。 DHCP 客户端的 IP 地址预订信息保存在 DHCP 数据库中。如果 DHCP 服务器资源发生故障,上述 DHCP 数据库将可以被转移到群集中可用的节点上,并且可以用从该 DHCP 数据库恢复的客户端数据重新启动。