Sun Cluster 概述(适用于 Solaris OS)

法定设备

法定设备是被两个或多个节点共享的磁盘,该设备进行投票来决定是否运行群集。只有达到了法定票数,群集才能运行。当群集分成若干单独的节点组时,法定设备用来确定哪些节点组构成新的群集。

群集节点和法定设备都会投票以形成法定数目。缺省情形下,群集节点在引导并成为群集成员时,其法定投票计数为一。当正在安装节点时,或当管理员将节点置于维护状态时,节点的投票计数可以是零。

法定设备获取法定投票计数,该票数基于设备连接的节点数。设置法定设备时,它将获取一个最大投票计数 N-1,其中 N 为法定设备的连接投票数。例如,连接到两个投票计数非零的节点的法定设备的法定投票计数为一(二减一)。

数据完整性

Sun Cluster 系统试图防止数据被破坏并确保数据完整性。因为群集节点共享数据和资源,所以决不能将群集分割成同时处于活动状态的多个独立分区。CMM 确保在任何时候仅有一个群集有效。

群集分区会引起两种类型的问题:群集分割和失忆。当节点间的群集互连失效,并且群集被分成多个子群集而每个子群集认为自己是唯一的分区时,会发生记忆分裂。不知道其他子群集的子群集可能会导致共享资源冲突,例如重复的网络地址和数据被破坏。

如果所有节点都认为群集处于不稳定的状态,就会发生失忆。以一个具有节点 A 和节点 B 的双节点群集为例。如果节点 A 关闭,仅更新节点 B 中的 CCR 配置数据,而不更新节点 A 中的CCR 配置数据。如果稍后节点 B 关闭,并重新引导节点 A,则节点 A 将使用 CCR 的旧内容运行。该状态称为失忆,它可能导致使用旧配置信息运行群集。

记忆分裂和失忆可以通过以下方法避免:赋予每个节点一个选票,并规定只有获得多数票数才能成为有效群集。获得多数票数的分区拥有法定数目,因此允许其运行。该多数投票机制适用于节点多于两个的群集。在双节点群集中,多数为二。如果这样的群集分为两个分区,则需要使用外部投票才能使其中一个分区获得法定数目。此外部投票由法定设备提供。法定设备可以是在两个节点间共享的任何磁盘。

表 2–1 介绍了 Sun Cluster 软件是如何使用法定数目来避免出现记忆分裂和失忆问题的。

表 2–1 群集法定数目及记忆分裂和失忆问题

分区类型 

仲裁解决情况 

记忆分裂 

仅使获得多数票数的分区(子群集)作为群集(其中仅能有一个拥有多数票数的分区)运行。节点失去法定数目竞争后,则该节点停止使用。 

失忆 

在引导群集时,保证至少有一个节点是最新的群集成员之一(因而有最新的配置数据)。 

故障防护

群集的一个主要问题是引起群集分区的故障(称作群集分割)。当此故障发生时,并不是所有节点都可以通信,所以单个节点或节点子集可能会试图组成单独的群集或群集子集。每个子集或分区都可能“认为”它对多主机磁盘具有唯一访问权和所有权。多节点试图写入磁盘可能导致数据被破坏。

故障防护通过防止对磁盘的访问,限制了节点对多主机磁盘的访问。当节点脱离群集时(它或是发生故障,或是分区),故障防护确保了该节点不再能访问磁盘。只有当前成员节点有权访问磁盘,从而确保数据的完整性。

Sun Cluster 系统使用 SCSI 磁盘保留来实现故障防护。使用 SCSI 保留,故障节点就将与多主机磁盘“隔离”开来,使它们无法访问那些磁盘。

当群集成员检测到另一个节点不再通过群集互连进行通信时,它启动故障防护措施来避免这个出现故障的节点访问共享磁盘。当故障防护发生时,将停止使用被防护节点,并且其控制台上显示“保留冲突”消息。

故障防护的故障快速防护机制

快速故障报警机制停止使用出现故障的节点,但是它不防止出现故障的节点重新引导。停止使用后,节点可能重新引导并试图重新加入群集。

如果某节点与群集中其他节点失去连接,并且它不属于可达到法定数目的分区的一部分,它将被另一节点强行从该群集中删除。属于可达到法定数目的分区的任何节点都预定了共享磁盘。根据快速故障报警机制,停止使用不拥有法定数目的节点。