Split-Brain 脑裂

 群集主机之间的 heartbeat 线路发生中断的情况时,会去 ping 区域网络中的 gateway ip,以协助判断到底是群集主机的网络出问题,还是区域网络之间网络整个出问题,以避免二台节点主机都以为对方主机失效,而争相要接手为 Active Node 进而造成脑裂(Split-Brain)的情况发生。

drbd
资源有 Primary Secondary 之分各司其职互不相干,Primary Node 负责整个资料的读取、写入、修改、删除,而 Secondary Node 只是同步动作后进行逻辑上的动作而以(并不会真的执行),但是当脑裂发生则会认为对方主机已经失效无法服务,因而纷纷将自己的资源角色提升为 Primary Node,因此二台主机都将实际执行资料的 I/O 读写操作,而运作于其上的应用程序也会写入相关资料(但是根本不知道写入的是哪一台主机)。为了保全资料因此拒绝所有连线。

分别查看二台主机的 drbd 资源状况时会发现,cs 栏位为 [ StandAlone ] 表示二台主机认为只剩下自己在维持资料同步服务了,ds 栏位为 [ UpToDate/Outdated ] 表示二台主机认为自己的资料是最新的,并等待备用主机来跟自己同步资料,p 栏位为 [ r----- ] 表示目前没有采用任何资料同步复制模式,来进行资料同步的动作。

service drbd status



解决脑裂状况
保留目前 Primary Node 上的资料,并且放弃 Secondary Node 上的资料进行设定。(下面 ha 是资源名称)

(1)
首先在 node-B 主机上执行 drbdadm secondary ha 指令,让它知道自己是 drbd 资源角色中的 Secondary Node,接着执行 drbdadm -- --discard-my-data connect ha 指令,表示放弃目前主机上的 drbd 资料,此时再查看 drbd 资源状态会发现 cs 栏位已经从先前的 [ StandAlone ] 变为 [ WFConnection ],表示准备连接至 drbd 资源角色为 Primary Node 的主机,而 p 栏位从 [ r----- ] 变为 [ C ] 表示将采用 Protocol C 来进行 drbd 资料同步复制的动作。
drbdadm secondary ha
drbdadm -- --discard-my-data connect ha
service drbd status

(2)
接着在 Node-A 主机执行如下:
drbdadm connect ha
service drbd status

你可能感兴趣的:(split-brain,脑裂.heartbeat)