因为群集节点共享数据和资源,所以群集必须采取措施保持数据和资源的完整性。当一个节点不符合群集的成员规则时, 群集必须禁止该节点加入群集。
在 Sun Cluster 中,决定节点是否可加入群集的机制叫做定额。Sun Cluster 采用一种多数票算法 来实现定额机制。群集节点和定额设备(两个或更多节点间共享的磁盘)都参加投票, 形成定额。一个定额设备可以包含用户数据。
定额算法自动执行:当群集事件触发其计算时,计算结果在群集的生命周期内会发生变化。 定额可防止发生两种潜在的群集问题 - 群集分割和失忆 - 二者均可造成使不一致的数据提供 给客户机。下表描述了这两种问题以及它们是如何解决的。
表 3-3 群集定额与群集分割和失忆问题
问题 |
描述 |
定额的解决方案 |
---|---|---|
群集分割 |
在节点间失去群集互连并且群集划分为若干子群集时发生,每个分区都认为自己是唯一分区 |
仅允许获得多数选票的分区(子群集)作为群集(其中最多仅能有一个拥有多数选票的分区) |
失忆 |
群集关闭后又重新启动时,此时的群集数据比关闭时旧 |
在群集引导时,保证至少有一个节点是最新的群集成员之一(因而有最新的配置数据) |
群集节点和定额设备(在两个或更多节点之间共享的磁盘)两者都通过投票来形成定额。缺省情形下,群集节点在 引导并成为群集成员时获取其中一个的定额投票计数。节点的投票数可以是零,例如当正在安装节点时,或当管理员将节点置于维护状态时。
定额设备获取定额投票计数基于设备的节点连接数。在设置定额设备时,它需获取一个最大投票 数 N-1,其中 N 是有非零投票数的节点数,并且这些节点有到 定额设备端口。例如,连接到两个投票数非零的节点的定额设备有其中一个的定额数(二减一)。
您要在在群集安装期间,或以后通过使用在 Sun Cluster 3.0 系统管理指南 中描述的过程来配置定额设备。
仅在当前连接的节点中至少有一个是群集成员时,定额设备才对投票数起作用。同时,在群集引导期间,仅在当前 连接的至少一个节点正在引导,并且在关闭时它是最近刚刚引导的群集成员的情况下,定额设备才对投票数起作用。
定额配置依赖于群集中节点的数目:
双节点群集 - 要形成双节点群集, 需要两个定额投票。这两个投票可以来自于两个群集节点,或者只来自一个节点和一个定额设备。然 而,在双节点群集中,必须配置一个定额设备,以确保在一个节点发生故障时另一单个节点可以继续工作。
多于两个节点的群集 - 您应在共享对磁盘存储器群组访问 的每对节点间指定一个定额设备。例如,假定您有一个由三个节点组成的群集,类似于图形 3-3中展示的群集那样。在此图中,nodeA 和 nodeB 共享对同 一磁盘群组的访问权,而 nodeB 和 nodeC 共享对另一磁盘群组的访问权。总共会有五个定额选票,其中三个来自节点,两个来自节点共享的定额设备。一个群集需要多数定额投票,即三个,才能形成。
Sun Cluster 不要求也不强迫在共享对磁盘存储器群组访问的每对节点间指定一个定额设备。但是,对于 N+1 配置降级为一个双节点群集并且 紧接着对两个磁盘群组都有访问权的节点也发生故障的情况,它可以提供所需要的定额选票。如果您在每对节点之间配置了定额设备,则其余的节点仍可作为一个群集来运行。
关于这些配置的实例请参见图形 3-3。
在设置定额设备时,请使用下列准则:
在连接相同共享磁盘存储器群组的所有节点间建立定额设备。在共享群组内添加一个磁盘 作为定额设备以确保在任何节点发生故障时,其他节点可以维持定额并可以控制共享群组上的磁盘设备组。
必须将定额设备连接到至少两个节点上。
定额设备可以是用作双端口定额设备的任何 SCSI-2 或 SCSI-3 磁盘。连接到超过两个节点的磁盘必须 支持 SCSI-3 持久性组保留 (PGR),而不论磁盘是否用为作定额设备。有关详细信息,请参见 Sun Cluster 3.0 安装指南 中有关计划的章节。
您可以使用包含用户数据的磁盘作为定额设备。
在节点集之间配置一个以上定额设备。使用来自不同群组的磁盘,并在每个节点集之间配置奇数的定额设备。这可以避免在单个定额设备发生故障。
群集的一个主要问题是引起群集分区的故障(称作群集分割)。当此故障发生时,并不是所有 节点都可以通信,所以个别节点或节点子集可能会尝试组成个体或群集子集。每个子集或分区都可能以为它对多主机磁盘的 唯一访问权和所有权。多个节点试图写入磁盘会导致数据损坏。
故障防护通过以物理方式防止对磁盘的访问,限制了节点对多主机磁盘的访问。当节点脱离群集时(它或是发生故障, 或是分区),故障防护确保了该节点不再能访问磁盘。只有当前成员节点有权访问磁盘,以保持数据的完整性。
磁盘设备服务为使用多主机磁盘的服务提供了失败切换能力。在当前担当磁盘设备组主节点(属主)的群集成员发生 故障或变得无法访问时,一个新的主节点会被选中,使得对磁盘设备组的访问得以继续,而只有微小的 中断。在此过程中,旧的主节点必须放弃对设备的访问,然后新的主节点才能启动。然而, 当一个成员从群集断开并变得无法访问时,群集无法通知那个节点释放那些将该节点作为主节点的设备。因而,您需要一种方法 来使幸存的成员能够从失败的成员那里控制并访问全局设备。
Sun Cluster 使用 SCSI 磁盘保留来实现故障防护。使用 SCSI 保留,故障节点被与多主机磁盘“隔离”起来,使它们 无法访问那些磁盘。
SCSI-2 磁盘保留支持一种保留形式,它或者授权给所有连接到磁盘的节点访问权(当没有保留上时),或者 限制对单个节点(即拥有该保留的节点)的访问权。
当群集成员检测到另一个节点不再通过群集互连进行通信时,它启动故障防护措施来避免另一个节点访问 共享磁盘。当发生此故障防护时,通常将防护的节点处于应急状态,并在其控制台上显示“保留冲突”的消息。
发生保留冲突是因为在节点已被检测到不再是群集成员后,一个 SCSI 保留被置于在此节点与其他节点间共享 的所有磁盘上。防护节点可能不会意识到它正在被防护,并且如果它试图访问这些共享磁盘之中的一个,它会检测到保留和应急状态。