群集成员监视器 (CMM) 是一组分布的代理程序,每个群集成员上都有一个代理程序。 这些代理程序在群集互连中交换信息,以便:
在所有节点上保持一致的成员视图(定额)
使用注册的回叫来驱动同步重新配置,以响应成员更改
处理群集划分(群集分割,失忆)
保证所有群集成员间的充分连通性
与 Sun Cluster 软件以前的发行版不同,CMM 是完全在内核中运行的。
CMM 的主要功能是针对在任一给定时间加入群集的节点集合建立一个群集范围内的协议。 这种约束称为群集成员。
为确定群集成员并最终保证数据的完整性,CMM:
说明群集成员的更改,如某个节点加入或脱离群集
保证"故障"节点脱离群集
保证"故障"节点在修复前不进入群集
防止群集将自身划分为一些节点子集
有关群集如何防止自身划分为多个独立群集的详细信息,请参阅"定额和定额设备"。
为确保数据免遭破坏,所有节点必须就群集成员达成一致协议。 如果需要,CMM 将根据故障来对群集服务(应用程序)重新进行配置。
CMM 会从群集传输层接收到关于与其他节点连通性的信息。 CMM 使用群集互连在重新配置期间交换状态信息。
检测到群集成员有更改后,CMM 会对群集执行一次同步配置,这时可能会按群集的新成员关系重新分配群集资源。
如果 CMM 检测到节点上存在严重的问题,它会要求群集框架来强制关闭该节点(应急状态)并将其从群集成员中删除。 实现这种功能的机制称为故障快速防护。 故障快速防护会使节点以两种方式关闭。
如果节点脱离群集后试图在没有定额的情况下启动新的群集,它会被"隔离",从而无法访问共享磁盘。 有关使用故障快速防护的详细信息,请参阅"故障防护"。
如果一个或多个特定于群集的守护程序出现故障(clexecd、rpc.pmfd、rgmd 或 rpc.ed),CMM 会检测到该故障,而节点将处于应急状态。
panic[cpu0]/thread=40e60: Failfast: Aborting because "pmfd" died 35 seconds ago. 409b8 cl_runtime:__0FZsc_syslog_msg_log_no_argsPviTCPCcTB+48 (70f900, 30, 70df54, 407acc, 0) %l0-7: 1006c80 000000a 000000a 10093bc 406d3c80 7110340 0000000 4001 fbf0 |
进入应急状态之后,该节点可能重新引导,试图重新连接群集;也可能停留在 OpenBoot PROM (OBP) 提示符状态下。 执行的具体操作将由 OBP 中的 auto-boot? 参数的设置来决定。