DRBD - 断开连接后自动恢复

时间:2017-03-30 15:06:44

标签: cluster-computing high-availability pacemaker drbd

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

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

我执行一项测试,断开连接DRBD网络接口的网络适配器之一(例如关闭网络适配器)。 现在,群集显示状态,即运行" drbd-overview"所有o.k BUT 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没有处理此故障并在连接为o.k时同步DRBD? 我看到一篇文章谈到"解决DRBD裂脑问题" - https://www.hastexo.com/resources/hints-and-kinks/solve-drbd-split-brain-4-steps/ 在本文中,它解释了如何解决断开连接和重新同步DRBD的问题。 但是我应该怎么知道存在这种问题?

我希望我能清楚地解释我的情况,并提供有关我拥有和我需要什么的足够信息......

1 个答案:

答案 0 :(得分:1)

1)您没有在Pacemaker或DRBD中使用fencing / STONITH设备,这就是当您拔下DRBD正在使用的网络接口时没有任何反应的原因。这不是Pacemaker在没有在DRBD中定义防护策略以及在Pacemaker内部定义STONITH设备时会做出反应的情况。

2)您可能只使用一个环用于Corosync通信(与DRBD设备相同),这将导致辅助节点升级到主节点(在DRBD中引入裂脑),直到重新连接集群通信并意识到他们有两个主人,将一个人降级为中学。同样,fencing / 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

希望有所帮助!