服务器 频道

Win2003高可用之道1:服务器集群

仲裁指定

    为防止这种错误的发生,每个集群包含一个称为仲裁的指定源,可用专用磁盘卷标来实现。通常情况下,该卷标上含有一对镜像磁盘,以增加容错水平。镜像磁盘的最优容量为500M(因为MTFS特性),但是也只使用了一部分容量。像其他资源,只有一个服务器在给定时间中拥有仲裁。仲裁拥有者最终负责决定所有其他资源的所有权。

    更具体的说,节点在预设定时间间隔(每1.2秒)中,以用户数据报协议(UDP)包的格式交换“心跳”信号,以确认其网络接口的可操作性。两个连续包的缺省将触发可能发生了地址集群问题的应对机制。在基于Windows 2000服务器的应用中,该机制包括激活当前仲裁服务器上的所有源,同时,关闭其它所有节点上的源。这样就有效的保证了每个源只有一个实例在线运行,不过,在一些特定情况下,会产生不期望的结果。

    尽管这种情况极少发生,还是有可能仲裁拥有者所有接口的连接都断掉的同时,余下的节点仍保持与客户网络通信的能力。结果,用户请求无法到达集群源,尽管这些源仍在运行,但是在位于无法访问到的节点上。然而其余的节点如果能获取仲裁以及所有其他源的拥有权的话,将完全有能力处理这些请求。

    在基于Windows Server 2003 的集群处理没有“心跳”信号过程中,引入附加逻辑可以解决这个问题。当检测到没有“心跳”信号时,节点先检查任意指定的公开网络接口是否可以操作,而不是运行后续程序,如果可以,再检测客户网络是否可达。这可以通过向外部系统发送ICMP回送请求(比如执行PING命令)来实现的——一一般为这些接口配置了默认网关。如果拥有仲裁的节点在所有这些测试中有一个不能通过的话,它将自动使包括仲裁源在内的所有源处于失效状态。如果其他节点发现它们的网络连接仍然工作,将能轻而易举的建立一个新的仲裁服务器,并且将所有集群源的控制权交给它。

    除了在通信发生故障后协助源仲裁外,仲裁还提供另一种重要的功能——存储最新的集群配置。该配置存储在仲裁卷的MSCS文件夹的两个文件中——集群存储检测点文件CHKxxx.tmp 和 仲裁日志Quolog.log。第一个文件存储了配置数据库的一个备份,是运行仲裁资源的服务器上存储于%SystemRoot%ClusterCLUSDB文件中的集群注册表池的内容的镜像。该数据库被复制到所有其他节点,并被导入到它们的注册表中(维持该信息的单一主备份以保证其一致性),每个新集群配置发生改变后都要进行复制,如果所有节点是在运行的。否则,改变被打上时戳记录在Quolog.log文件中,用于一旦离线节点恢复在线状态后的配置数据库中。了解这些情况对于解决大多数严重的集群问题是很重要的。

   正如以上所提到的,仲裁是以物理磁盘上的一个卷来实现的。不过,具体的实现细节可由很多因素来确定,比如说节点数目、服务器集群类型和存储技术。该系列的后续文章中,我们将讨论这些因素并继续进行我们的服务器集群原理相关论述。

0
相关文章