我想让您考虑一下我们主动-被动集群(DRBD、Pacemaker、Corosync、PostgreSQL)上当前发生的情况
操作系统:Ubuntu 服务器 14.04 x64 DRBD:8.4 Pacemaker:1.1.10 Corosync:2.3.3 PostgreSQL:9.3
问题如下:当主节点宕机时,辅助节点被选为主节点。问题出现在重新引入前一个主节点时,它直接进入了裂脑情况,而它本应成为辅助节点。以下是事件的详细顺序和相应的日志:
A:主要,B:次要
1-A 下降
2-B 成为 PRIMARY
3-A 再次启动-->裂脑(我们推测在这种情况下,故障转移可以自动完成)
来自 A 的日志:
Jan 28 16:15:11 node1 kernel: [ 538.025422] block drbd0: helper command: /sbin/drbdadm initial-split-brain minor-0
Jan 28 16:15:11 node1 kernel: [ 538.026185] block drbd0: helper command: /sbin/drbdadm initial-split-brain minor-0 exit code 0 (0x0)
Jan 28 16:15:11 node1 kernel: [ 538.026194] block drbd0: Split-Brain detected but unresolved, dropping connection!
DRBD 状态:
service drbd status
drbd driver loaded OK; device status:
version: 8.4.3 (api:1/proto:86-101)
srcversion: F97798065516C94BE0F27DC
m:res cs ro ds p mounted fstype
0:pg StandAlone Secondary/Unknown Consistent/DUnknown r-----
据我所知,DRBD 似乎破坏了这个节点的状态。
我的问题是:
1-我的假设是否正确,在事件 3 中,返回节点可以自动加入到集群?
2-如果可以做到,请告诉我们如何做。
答案1
1-我的假设是否正确,在事件 3 中,返回节点可以自动加入到集群?
是的,可以这样做。除非在资源配置中指定,否则 DRBD 不应自行转为主节点;请检查资源配置中是否未设置“startup { become-primary-on }”定义。
2-如果可以做到,请告诉我们如何做。
检查下列内容是否正确:
a. 'drbd' 未设置为在启动时启动(RHEL 中为 'chkconfig drbd off',Debian 中为 'update-rc.d drbd disable')。
b. DRBD 不应被配置为自行成为主服务器(如上所述)。
DRBD 用户指南中有一节介绍如何配置 DRBD 以与 Pacemaker 一起使用,如果我的上述回答不起作用的话,这个部分可能会有所帮助:https://drbd.linbit.com/users-guide/ch-pacemaker.html