我们使用的是 SLES 12 SP4
我们从今天的测试中观察到一些事情。以下是步骤:
步骤1:当我们使用命令“创建内核恐慌(在 Node01 上)时echo 'b' > /proc/sysrq-trigger“ 或者 ”echo 'c' > /proc/sysrq-trigger在资源运行的节点上,集群检测到变化但无法启动其他活动节点上的任何资源(SBD 除外)。
第2步:根据日志我们可以发现以下错误:
pengine: info: LogActions: Leave stonith-sbd (Started node02)
pengine: notice: LogAction: * Start pri-javaiq (node02 ) due to unrunnable nfs_filesystem start (blocked)
pengine: notice: LogAction: * Start lb_health_probe (node02 ) due to unrunnable nfs_filesystem start (blocked)
pengine: notice: LogAction: * Start pri-ip_vip (node02 ) due to unrunnable nfs_filesystem start (blocked)
pengine: notice: LogAction: * Start nfs_filesystem (node02 ) blocked
步骤3:但是当我们在节点上执行“init 6”(我们在该节点上创建了“内核恐慌”)时,令人惊讶的是其他节点上的资源正在成功启动并运行。
答案1
我的猜测是您没有设置或正确配置看门狗。
SBD 击剑之所以有效,是因为有两个部分。首先,“毒丸”通过共享存储传递给行为不当的节点,如果 SBD 失败,看门狗将重新启动节点,并且节点无法“自杀”。
听起来你正在使节点崩溃/恐慌,所以它不可能在那时自我隔离,我们必须依靠看门狗来重新启动系统。这也可以解释为什么当您运行 init 6 时它的行为与您所期望的一样,因为您已经有效地手动完成了看门狗会做的事情。
SuSE 拥有出色的 SBD 防护文档,包括有关为何需要看门狗以及如何配置它的解释。https://documentation.suse.com/sle-ha/15-SP1/html/SLE-HA-all/cha-ha-storage-protect.html
答案2
终于,我们找到了原因。这是因为,起搏器服务在启动时启用。一旦我们禁用起搏器服务,现在就没有问题了。