roo*_*e09 5 debian drbd linux-ha
我的 Debian 8.9 DRBD 8.4.3 设置不知何故进入了两个节点无法再通过网络连接的状态。他们应该复制单个资源r1,但紧接着drbdadm down r1; drbadm up r1在两个节点上他们/proc/drbd描述的情况如下:
在第一个节点上(连接状态为WFConnection或StandAlone):
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)