Sun Cluster 概念指南(适用于 Solaris OS)

法定和法定设备

本节包含以下主题:


注意 –

要获得 Sun Cluster 软件支持作为法定设备的特定设备的列表,请与 Sun 服务提供商联系。


由于群集节点共享数据和资源,因此决不能将一个群集分割为多个同时处于活动状态的独立分区,因为多个活动分区可能会导致数据损坏。群集成员监视器 (CMM) 和法定算法可保证:即使群集互连已进行分区,同一群集在任何时刻最多有一个实例可运行。

有关 CMM 的更多信息,请参见Sun Cluster 概述(适用于 Solaris OS)》中的“群集成员”

群集分区会引起两类问题:

当群集因节点间的群集互连丢失而分割成多个子群集时,即会出现记忆分裂。由于一个分区中的节点无法与其他分区中的节点进行通信,因此每个分区均认为自身为仅有的分区。

当群集在关闭后使用比关闭时旧的群集配置数据重新启动时,即会出现失忆。在节点上启动群集,而此节点不在最后运行的群集分区中时会发生此问题。

Sun Cluster 软件可以通过以下方法避免群集分割和失忆:

获得多数选票的分区达到法定数目,因此允许其运行。此多数选票机制可避免在一个群集中配置两个以上节点时发生群集分割和失忆。但是,在一个群集中配置两个以上节点时,只计算节点选票是不够的。在双节点群集中,多数为二。如果一个此类双节点群集分为多个分区,则每个分区均需要外部选票才能达到法定数目。此外部选票由法定设备提供。

关于法定选票计数

使用 scstat -q 命令可以确定以下信息:

有关此命令的更多信息,请参见 scstat(1M)

节点和法定设备均可为群集投选票以达到法定数目。

节点投选票取决于节点的状态:

法定设备将基于连接至此设备的选票数目投选票。配置法定设备时,Sun Cluster 软件将法定设备的选票计数指定为 N-1,其中 N 为已连接至法定设备的选票数目。例如,连接到选票计数不为零的两个节点的法定设备具有的法定计数为一(二减一)。

如果以下两个条件之为真,法定设备将投选票:

您可以在安装群集的过程中配置法定设备,也可以稍后按照Sun Cluster 系统管理指南(适用于 Solaris OS)》中的“管理定额”中说明的步骤进行配置。

关于故障防护

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

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

磁盘设备服务为使用多主机设备的服务提供了故障转移能力。在当前担当磁盘设备组主节点(属主)的群集成员发生故障或变得无法访问时,一个新的主节点会被选中,使得对磁盘设备组的访问得以继续,而只有微小的中断。在此过程中,旧的主节点必须放弃对设备的访问,然后新的主节点才能启动。然而,当一个成员从群集断开并变得无法访问时,群集无法通知那个节点释放那些将该节点作为主节点的设备。因而,您需要一种方法来使幸存的成员能够从失败的成员那里控制并访问全局设备。

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

SCSI-2 磁盘保留支持一种保留形式,它或者给所有连接到磁盘的节点都授予访问权(当没有进行任何保留时),或者限制对单个节点(即拥有该保留的节点)的访问权。

当群集成员检测到另一个节点不再通过群集互连进行通信时,它启动故障防护措施来避免另一个节点访问共享磁盘。当发生此故障防护时,通常将防护的节点处于应急状态,并在其控制台上显示“保留冲突”的消息。

发生保留冲突的原因是:在某个节点已被检测为不再是群集成员后,又将一个 SCSI 保留置于在此节点与其他节点所共享的所有磁盘上。防护节点可能不会意识到它正处于防护状态;如果它试图访问这些共享磁盘之中的一个,它会检测到该保留并进入应急状态。

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

群集框架通过一种机制确保故障节点无法重新引导并开始写入共享存储器,这种机制称为故障快速防护

属于群集成员的节点对它们可以访问的磁盘(包括仲裁磁盘)持续启用一个特定 ioctl:MHIOCENFAILFAST。该 ioctl 是对磁盘驱动程序的指令,它能使节点在以下情况下自身进入应急状态:某磁盘由于被其他节点保留而无法让该节点进行访问。

MHIOCENFAILFAST ioctl 使驱动程序检查节点发布给磁盘的每个读写操作返回的错误,以查找 Reservation_Conflict 错误代码。该 ioctl 定期在后台向磁盘发出一个测试操作,检查是否出现 Reservation_Conflict。如果系统返回 Reservation_Conflict 消息,前台和后台控制流路径均进入应急状态。

对于 SCSI-2 磁盘,保留不是永久性的 — 它们在节点重新引导之后将不再存在。对于具有持久性组保留 (PGR) 的 SCSI-3 磁盘,保留信息存储在磁盘上,并在多次节点重新引导后仍保持有效。无论使用 SCSI-2 磁盘还是 SCSI-3 磁盘,故障快速防护机制的工作方式都是一样的。

如果某节点与群集中其他节点失去连接,并且它不属于可获取仲裁的分区的一部分,它将被另一节点强行从该群集中删除。属于可获取仲裁的分区一部分的另一节点将保留放置在共享磁盘上,当不具备仲裁的节点试图访问共享磁盘时,它将接到保留冲突消息,并在故障快速防护机制的作用下进入应急状态。

出现应急状态之后,节点可能重新引导并尝试重新加入群集;或者,如果群集是由基于 SPARC 的系统组成的,则停留在 OpenBootTM PROM (OBP) 提示符处。所采取的操作取决于 auto-boot? 参数的设置。您可以在基于 SPARC 的群集中的 OpenBoot PROM ok 提示符处使用eeprom(1M) 来设置 auto-boot?,也可以在基于 x86 的群集中,在 BIOS 引导之后选择运行 SCSI 实用程序来设置 auto-boot?

关于法定配置

以下内容包含了有关法定配置的一些实际情况:

有关应避免的法定配置的示例,请参见错误的法定配置。有关建议的法定配置的示例,请参见建议的法定配置

遵守法定设备要求

您必须遵守以下要求。否则,可能影响群集的可用性。

有关应避免的法定配置的示例,请参见错误的法定配置。有关建议的法定配置的示例,请参见建议的法定配置

遵守法定设备最佳配置

使用以下信息可为拓扑评估最佳法定配置:

有关应避免的法定配置的示例,请参见错误的法定配置。有关建议的法定配置的示例,请参见建议的法定配置

建议的法定配置

有关应避免的法定配置的示例,请参见错误的法定配置

双节点配置中的法定数目

组成双节点群集需要两个法定选票。这两个选票可以来自于两个群集节点,或者只来自一个节点和一个仲裁设备。

图 3–2 双节点配置

说明:说明节点 A 和节点 B 有一个连接至两个节点的法定设备。

双节点以上配置中的法定数目

配置没有法定设备的多于两个节点的群集是有效的。不过,如果这样做,则无法在群集中没有大多数节点时启动群集。

说明:配置 1:节点 A-D。A/B 连接至 (->) QD1。C/D -> QD2。配置 2:节点 A-C。A/C -> QD1。B/C -> QD2。配置 3:节点 A-C -> 一个 QD。

非典型法定配置

图 3–3 假定正在节点 A节点 B 上运行任务紧要的应用程序(例如 Oracle 数据库)。如果节点 A节点 B 不可用并且无法访问共享数据,您可能需要关闭整个群集。否则,此配置不是最佳配置,因为它不能提供高可用性。

有关与此例外情况相关的最佳配置的信息,请参见遵守法定设备最佳配置

图 3–3 非典型配置

说明:节点 A-D。节点 A/B 连接至 QD1-4。节点 C 连接至 QD4。节点 D 连接至 QD4。全部选票 = 10。法定数目所需选票 = 6。

错误的法定配置

有关建议的法定配置的示例,请参见建议的法定配置

说明:配置 1:节点 A/B 连接至 QD1/2。配置 2:节点 A-D。A/B 连接至 QD1/2。配置 3:节点 A-C。A/B 连接至 QD1/2。C 连接至 QD2。