如何让 DRBD 节点脱离连接状态 StandAlone(和 WFConnection)?

roo*_*e09 5 debian drbd linux-ha

我的 Debian 8.9 DRBD 8.4.3 设置不知何故进入了两个节点无法再通过网络连接的状态。他们应该复制单个资源r1,但紧接着drbdadm down r1; drbadm up r1在两个节点上他们/proc/drbd描述的情况如下:

在第一个节点上(连接状态为WFConnectionStandAlone):

1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----
   ns:0 nr:0 dw:0 dr:912 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:20
Run Code Online (Sandbox Code Playgroud)

在第二个节点上:

1: cs:StandAlone ro:Secondary/Unknown ds:UpToDate/DUnknown   r-----
   ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:f oos:48
Run Code Online (Sandbox Code Playgroud)

两个节点可以通过 中引用的 IP 地址相互 ping 通/etc/drbd.d/r1.res,并netstat显示两者都在引用的端口上进行侦听。

我如何(进一步诊断和)摆脱这种情况,以便两个节点可以连接并再次通过 DRBD 进行复制?

顺便说一句,在更高的抽象层次上,这个问题目前通过systemctl start drbd永不退出表现出来,显然是因为它被卡在了drbdadm wait-connect all(如 所建议的那样/lib/systemd/system/drbd.service)。

roo*_*e09 12

这种情况显然是由一个裂脑病例引起的。

我没有注意到这一点,因为我只检查了drbd.service( sudo journalctl -u drbd) 的最近日志条目,但问题显然是在其他内核日志中报告的,并且稍早一些 ( sudo journalctl | grep Split-Brain)。

这样,手动解决裂脑(如此此处所述)也解决了如下麻烦的情况。

在裂脑受害者上(假设 DRBD 资源是r1):

drbdadm disconnect r1
drbdadm secondary r1
drbdadm connect --discard-my-data r1
Run Code Online (Sandbox Code Playgroud)

关于裂脑幸存者:

drbdadm primary r1
drbdadm connect r1
Run Code Online (Sandbox Code Playgroud)

  • 最好将您的步骤包含在您的答案中,而不是链接到可能稍后移动的网站。我想你只需要在两个节点上使用 `drbdadm disconnect r1`,然后在受害者上使用 `drbdadm connect r1 --discard-my-data`,在幸存者上使用 `drbdadm connect r1`。 (2认同)