我在两个节点上使用crm-fence-peer.9.sh
和脚本实现了 DRBD 资源级防护。crm-unfence-peer.9.sh
现在,我的实验室节点出现以下情况:
两个节点
otrs1
均otrs2
在线资源正在运行
otrs1
- 根据
drbdadm status
otrs1
担任主要角色和otrs2
担任次要角色
现在,当我重新启动时otrs1
,otrs2
我收到以下消息:
可以看到资源已移至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 的多个通信路径。