2

我有配置了 DRBD 资源的高可用性集群。

 Master/Slave Set: RVClone01 [RV_data01]
     Masters: [ rvpcmk01-cr ]
     Slaves: [ rvpcmk02-cr ]

我执行了一个测试,断开连接 DRBD 网络接口之间的一个网络适配器(例如关闭网络适配器)。现在集群显示状态,一切正常,但运行“ drbd -overview”时 DRBD 的状态显示在主服务器中:

[root@rvpcmk01 ~]# drbd-overview
 0:drbd0/0  WFConnection Primary/Unknown UpToDate/DUnknown /opt ext4 30G 13G 16G 45%

在辅助服务器中:

[root@rvpcmk02 ~]# drbd-overview
 0:drbd0/0  StandAlone Secondary/Unknown UpToDate/DUnknown

现在我有几个问题: 1. 为什么集群不知道 DRBD 的问题?2. 为什么当我把掉线的网卡重新UP,重新连接DRBD之间的连接时,DRBD没有处理这个故障,连接正常就同步回DRBD?3. 我在这篇文章中看到了一篇关于“解决 DRBD 裂脑”的文章 - https://www.hastexo.com/resources/hints-and-kinks/solve-drbd-split-brain-4-steps/文章解释了如何克服断开连接的问题并重新同步 DRBD。 但是我怎么知道存在这种问题呢?

我希望我能清楚地解释我的情况,并提供足够的信息来说明我拥有什么以及我需要什么......

4

1 回答 1

1

1) 您没有在 Pacemaker 或 DRBD 中使用 fencing/STONITH 设备,这就是为什么当您拔下 DRBD 正在使用的网络接口时没有任何反应。如果没有在 DRBD 和 Pacemaker 中定义 STONITH 设备,Pacemaker 不会对这种情况做出反应。

2)您可能只使用一个环进行 Corosync 通信(与 DRBD 设备相同),这将导致 Secondary 升级为 Primary(在 DRBD 中引入裂脑),直到集群通信重新连接并意识到它们有两个主人,一个降级到次要。同样,围栏/STONITH 将防止/处理此问题。

3)您可以在您的 DRBD 配置中设置裂脑通知处理程序。

在 Pacemaker 中设置 STONITH/fencing 设备后,您可以将以下定义添加到您的 DRBD 配置中,以“修复”您在问题中提到的所有问题:

resource <resource>
  handlers {
    split-brain "/usr/lib/drbd/notify-split-brain.sh root";
    fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
    after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh";
    ...
  }
  disk {
    fencing resource-and-stonith;
    ...
  }
  ...
}

在 Pacemaker 中设置 fencing/STONITH 有点过于依赖您的硬件/软件,我无法为您提供有关为您的集群进行设置的指示。这应该让你指出正确的方向: http ://clusterlabs.org/doc/crm_fencing.html

希望有帮助!

于 2017-03-30T22:58:49.057 回答