使用 crm-fence-peer 脚本进行裂脑恢复

使用 crm-fence-peer 脚本进行裂脑恢复

我在两个节点上使用crm-fence-peer.9.sh和脚本实现了 DRBD 资源级防护。crm-unfence-peer.9.sh

在此输入图像描述

现在,我的实验室节点出现以下情况:

  • 两个节点otrs1otrs2在线

  • 资源正在运行otrs1

  • 根据drbdadm status otrs1担任主要角色和otrs2担任次要角色

在此输入图像描述

现在,当我重新启动时otrs1otrs2我收到以下消息:

在此输入图像描述

可以看到资源已移至otrs2

在此输入图像描述

我可以看到创建的位置约束: 在此输入图像描述

如果复制链路再次连接并且 DRBD 完成其同步过程,则约束将被删除。集群管理器现在可以自由地提升资源。事实上,现在约束已被删除:

在此输入图像描述

但一旦我禁用otrs2(当前活动节点)上的 NIC,我就可以看到裂脑发生了:

在此输入图像描述

显然这是一个裂脑场景。为什么会这样呢?是因为

对于 crm-fence-peer 脚本,当 DRBD 的网络链接中断时,Pacemakers 通信必须保持可用。

来源https://docs.linbit.com/docs/users-guide-9.0/#s-automatic-split-brain-recovery-configuration

答案1

正确的。这很可能是因为:

对于 crm-fence-peer 脚本,当 DRBD 的网络链接中断时,Pacemakers 通信必须保持可用。

我假设您只有一个 NIC/网络链接。因此,当您取下 NIC 时,起搏器集群就会分裂。由于集群节点根本无法再通信,因此当前主节点无法在对等方的 CIB 中放置约束,因为它无法与对等方通信。

为了避免这种情况下的脑裂,您需要真正的节点级防护 (STONITH),或者至少需要 Corosync 的多个通信路径。

相关内容