C.3. 常见群集行为:常规

失去到电源开关的连接或保护(fence)成员失败

常见原因:串行电源开关断开了到控制成员的连接。网络电源开关断开了到网络的连接。

预计行为:被电源开关控制的成员将不会被关闭或重新启动。在这种情况下,如果成员被挂起,服务将不会从被有问题的电源开关控制的成员中失效转移。

校验:运行 clustat 来校验成员上的服务是否仍被标为 running,即便成员是 inactive

群集仲裁的解散

常见原因:多数群集成员(例如,三到五个成员)离线。

测试例:在一个三成员的群集中,停止两个成员上的群集软件。

预计行为:所有没有控制电源开关的成员都会立即重新引导。所有服务会立即停止,它们的状态不会在共享介质上更新(运行 clustat 时,服务状态栏可能仍会显示服务在运行)。服务管理器退出。群集锁丢失,并且不可用。

校验:在剩余的活跃成员之一上运行 clustat

成员失去在群集仲裁中的成员状态,但是没有被挂起

常见原因:完全失去和其它成员的连接。

测试例:从群集成员中断开所有网络电缆。

预计行为:如果成员没有控制电源开关,它会立即重新引导。否则,它会试图尽快停止服务。如果某仲裁存在,组成群集仲裁的成员集合将会保护(fence)这个成员。

clumembd 崩溃

测试例:killall -KILL clumembd

预计行为:系统重新引导。

clumembd 挂起,监视器被使用

测试例:killall -STOP clumembd

预计行为:如果 clumembd 挂起的时间大于 (failover_time - 1) 秒,系统就会重新引导。被监视计时器从外部引发。

clumembd 挂起,无监视器被使用

测试例:killall -STOP clumembd

预计行为:如果 clumembd 挂起的时间大于 (failover_time) 秒,系统就会重新引导。被 clumembd 从内部引发。

cluquorumd 崩溃

测试例:killall -KILL cluquorumd

预计行为:系统重新引导。

clusvcmgrd 崩溃

测试例:killall -KILL clusvcmgrd

预计行为:cluquorumd 重新生成 clusvcmgrd,它会运行所有服务的停止阶段。被停止的服务会被启动。

校验:参考系统日志中来自 cluquorumd 的警告消息。

clulockd 崩溃

测试例:killall -KILL clulockd

预计行为:cluquorumd 重新生成 clulockd。锁可能会在短期内不可用(防止服务的状态转换)。

校验:参考系统日志中来自 cluquorumd 的警告消息。

预料之外的系统重新引导,没有完整关闭群集服务

常见原因:导致系统重新引导的任何已知情况。

测试例:reboot -fn;按重设按钮。

预计行为:如果电源开关控制要重新引导的成员,那么若群集仲裁存在,整个系统也将会被保护(fence)(通常重开电源)。

在完整关机时失去仲裁

测试例:停止所有成员上的群集服务(service clumanager stop)。

预计行为:剩余的服务都被不完整地停止。

校验:参考系统日志中的警告消息。

成功的 STONITH 保护操作

预计行为:被保护(fence)的成员上的服务在群集中的其它成员上被启动(若可能)。

校验:校验服务在成员被保护(fence)后确实被启动。这应该只花几秒钟。

对群集成员不成功的保护操作

常见原因:电源开关返回了错误状态或不可通信。

测试例:断开控制成员的电源开关,在成员上运行 reboot -fn

预计行为:保护(fence)失败的成员上的服务不会在群集的其它地方被启动。如果该成员恢复了,群集上的服务会被重新启动。因为没有准确判定成员状态的方法,即便心跳停止,成员也会被假定仍在运行。因此,在断线的成员上的所有服务都应该被报告为运行。

校验:运行 clustat 来校验服务在成员上仍被标为运行,即便成员本身是不活跃的。日志中记录的消息会说该成员处于 PANIC 状态。

从共享分区之一中读取时出错

测试例:运行 dd 来在共享分区上写零

	    
dd if=/dev/zero of=/dev/raw/raw1 bs=512 count=1
shutil -p /cluster/header

预计行为:事件被记录。情况良好的共享分区上的数据被复制到返回错误的分区上。

校验:第二次读取同样的数据不应该生成第二条错误消息。

在两个共享分区上读取时都出错

常见原因:共享介质不会联系,或两个分区都损坏了。

测试例:断开成员上的 SCSI 或光纤频道电缆。

预计行为:事件被记录。采取了配置的行动(reboot/halt/stop/ignore)来解决无法存取共享贮存区的问题。默认行动是重新引导(reboot)。