本节包含以下主题:
要获得 Sun Cluster 软件支持作为法定设备的特定设备的列表,请与 Sun 服务提供商联系。
由于群集节点共享数据和资源,因此决不能将一个群集分割为多个同时处于活动状态的独立分区,因为多个活动分区可能会导致数据损坏。群集成员监视器 (CMM) 和法定算法可保证:即使群集互连已进行分区,同一群集在任何时刻最多有一个实例可运行。
有关法定算法和 CMM 的简介,请参见《Sun Cluster 概述(适用于 Solaris OS)》中的“群集成员”。
当群集因节点间的群集互连丢失而分割成多个子群集时,即会出现记忆分裂。由于一个分区中的节点无法与其他分区中的节点进行通信,因此每个分区均“认为”自己为仅有的分区。
当群集在关闭后使用比关闭时旧的群集配置数据重新启动时,即会出现失忆。在不是最近一次运行的群集分区中的节点上启动群集时会发生此问题。
Sun Cluster 软件可以通过以下方法避免群集分割和失忆:
为每个节点指定一个选票
为运行的群集强制指定多数选票
获得多数选票的分区达到法定数目,因此允许其运行。此多数选票机制可避免在一个群集中配置两个以上节点时发生群集分割和失忆。但是,在一个群集中配置两个以上节点时,只计算节点选票是不够的。在双节点群集中,多数为二。如果一个此类双节点群集分为多个分区,则每个分区均需要外部选票才能达到法定数目。此外部选票由仲裁设备提供。
使用 scstat -q 命令可以确定以下信息:
配置的选票总数
当前已有选票
达到法定数目所需的选票
有关此命令的更多信息,请参见 scstat(1M)。
节点和法定设备均可为群集投选票以达到法定数目。
节点根据其状态来投选票:
节点进行引导并成为群集成员时选票计数为一。
节点正被安装时选票计数为零。
系统管理员将节点置入维护状态时,节点选票计数为零。
法定设备根据连接至此设备的选票数目投选票。配置法定设备时,Sun Cluster 软件将法定设备的选票计数指定为 N-1,其中 N 为已连接至法定设备的选票数目。例如,连接到两个投票计数非零的节点的法定设备的法定投票计数为一(二减一)。
如果以下两个条件之一为真,法定设备将投选票:
当前连接至法定设备的节点中至少有一个节点是群集成员。
当前连接至法定设备的节点中至少有一个节点正在进行引导,并且该节点是最后拥有此法定设备的群集分区的成员。
您可以在安装群集的过程中配置法定设备,也可以稍后按照《Sun Cluster 系统管理指南(适用于 Solaris OS)》中的第 5 章 “管理定额”中说明的过程。
群集的一个主要问题是引起群集分区的故障(称作群集分割)。发生记忆分裂时,并不是所有节点都可以通信,因此单个节点或节点子集可能会尝试构成单个群集或群集子集。每个子集或分区都可能“认为”它对多主机设备具有唯一访问权和所有权。当多个节点试图对磁盘进行写入操作时,就会发生数据损坏。
故障防护通过以物理方式防止对磁盘的访问,限制了节点对多主机设备的访问。当节点脱离群集时(它或是发生故障,或是分区),故障防护确保了该节点不再能访问磁盘。只有当前成员节点有权访问磁盘,以保持数据的完整性。
磁盘设备服务为使用多主机设备的服务提供了故障转移能力。在当前担当磁盘设备组主节点(属主)的群集成员发生故障或变得无法访问时,一个新的主节点会被选中。此新的主节点使得对磁盘设备组的访问得以继续,而只有微小的中断。在此过程中,旧的主节点必须放弃对设备的访问,然后新的主节点才能启动。然而,当一个成员从群集断开并变得无法访问时,群集无法通知那个节点释放那些将该节点作为主节点的设备。因而,您需要一种方法来使幸存的成员能够从失败的成员那里控制并访问全局设备。
Sun Cluster 系统使用 SCSI 磁盘保留来实现故障防护。使用 SCSI 保留,故障节点就将与多主机设备“隔离”开来,使它们无法访问那些磁盘。
SCSI-2 磁盘保留支持一种保留形式,它或者为所有连接到磁盘的节点都授予访问权(当没有进行任何保留时),或者只允许一个节点(拥有保留的节点)具有访问权。
当群集成员检测到另一个节点不再通过群集互连进行通信时,它启动故障防护措施来避免另一个节点访问共享磁盘。当故障防护发生时,将停止使用被防护节点,并且其控制台上将显示“保留冲突”消息。
如果发现某个节点不再是群集成员,则将在此节点与其他节点所共享的所有磁盘上触发 SCSI 保留。被防护节点可能不会“意识”到它正处于防护状态,当它试图访问这些共享磁盘之中的一个时,它会检测到保留并进入停止使用状态。
群集框架通过一种机制确保故障节点无法重新引导并开始写入共享存储器,这种机制被称为故障快速防护。
属于群集成员的节点对它们可以访问的磁盘(包括仲裁磁盘)持续启用一个特定 ioctl:MHIOCENFAILFAST。该 ioctl 是针对磁盘驱动程序的指令。如果由于磁盘被某些其他节点保留而使节点无法访问磁盘,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 实用程序来设置此参数。
以下内容包含了有关法定配置的一些实际情况:
法定设备可以包含用户数据。
在 N+1 配置(其中,N 个法定设备分别连接至 1 至 N 个节点中的一个节点和第 N+1 个节点)中,当所有 1 至 N 个节点或任何 N/2 个节点发生故障时,群集仍可用。此可用性假定法定设备运行正常。
在 N 节点配置(一个法定设备连接至所有节点)中,如果任何 N-1 个节点发生故障,群集仍可用。此可用性假定法定设备运行正常。
在 N 节点配置(一个法定设备连接至所有节点)中,如果所有群集节点均可用,即使法定设备发生故障,群集仍可用。
有关应避免的法定配置的示例,请参见错误的法定配置。有关建议的法定配置的示例,请参见建议的法定配置。
您必须遵守以下要求。如果忽略这些要求,可能影响群集的可用性。
确保 Sun Cluster 软件支持作为法定设备的特定设备。
要获得 Sun Cluster 软件支持作为法定设备的特定设备的列表,请与 Sun 服务提供商联系。
Sun Cluster 软件支持两类法定设备:
支持 SCSI-3 PGR 保留的多主机共享磁盘
支持 SCSI-2 保留的双主机共享磁盘
在双节点配置中,必须至少配置一个法定设备,以确保在一个节点发生故障时另一个节点可以继续运行。请参见图 3–2。
有关应避免的法定配置的示例,请参见错误的法定配置。有关建议的法定配置的示例,请参见建议的法定配置。
使用以下信息可为拓扑评估最佳法定配置:
设备是否能够连接至群集的所有节点?
如果是,请将此设备配置为一个法定设备。由于您的配置为最佳配置,因此无需配置其他法定设备。
如果忽视此要求而又添加其他法定设备,则多加的法定设备会降低群集的可用性。
如果否,请配置一个或多个双端口设备。
请确保法定设备投出的选票总数绝对小于节点投出的选票总数。否则,如果所有磁盘都不可用,即使所有节点都在运行,节点也无法组成群集。
在特定环境中,有时可能需要降低群集的整体可用性才能满足要求。在这些情况下,您可以忽略此最佳配置。不过,不遵守此最佳配置会降低整体可用性。例如,在非典型法定配置中简要列出的配置中,群集可用性较低:法定选票超出节点选票。群集具有以下属性:如果无法访问节点 A 和节点 B 共享的存储器,则整个群集将出现故障。
有关此最佳做法的例外情况,请参见非典型法定配置。
在每对节点(共享对同一存储设备的访问)之间指定一个法定设备。此法定配置将加速故障防护进程。请参见双节点以上配置中的法定数目。
在节点加入或节点停止之后,法定设备进行重新配置会有些慢。因此,请不要添加不必要的法定设备。
有关应避免的法定配置的示例,请参见错误的法定配置。有关建议的法定配置的示例,请参见建议的法定配置。
本部分介绍了一些建议的法定配置的示例。有关应避免的法定配置的示例,请参见错误的法定配置。
组成双节点群集需要两个法定选票。这两张选票可以来自于两个群集节点,或者是来自一个节点和一个法定设备。
您可以配置没有法定设备的多于两个节点的群集。不过,在这种情况下,如果群集中的大多数节点都不可用,则无法启动群集。
图 3–3 假定正在节点 A 和节点 B 上运行任务关键的应用程序(例如 Oracle 数据库)。如果节点 A 和节点 B 不可用并且无法访问共享数据,您可能需要关闭整个群集。否则,此配置不是最佳配置,因为它不能提供高可用性。
有关与此例外情况相关的最佳做法的信息,请参见遵守法定设备最佳做法。
本部分介绍了一些应避免的法定配置的示例。有关建议的法定配置的示例,请参见建议的法定配置。