DRBD脑裂(split brain)
脑裂实际上是指在某种情况下,造成DRBD的两个节点断开连接,都以primary的身份来运行。当DRBD某primary节点连接对方节点准备发送信息的时候,如果发现对方也是primary状态,那么会立刻自行断开连接,并认定当前已经发生split brain,这时候会在系统日志中记录以下信息:“Split-Brain detected,dropping connection!”当发生split brain之后,如果查看连接状态,其中至少会有一个是StandAlone状态,另外一个可能也是StandAlone(如果是同时发现split brain状态),也有可能是WFConnection的状态。
对于脑裂,DRBD有四中处理方式:
- 新成为主节点的把数据丢弃,再同步老节点的数据
- 把老的主节点的数据丢弃,再同步新节点的数据
- 谁的数据修改的少,谁主动丢弃数据
- 如果有个节点从没发生过数据修改,那就不用动
自动裂脑自动修复能不能被接受取决于对数据丢失的容忍性。例如,财务的数据库对于任何修改的丢失都是不能容忍的,这 表示不管在什么情况下都需要手工修复裂脑问题。因此,是否启用裂脑自动修复需要考虑具体情况。
今天遇到了openfiler HA(双活)集群中的DRBD服务出现了脑裂。下面是手动解决过程:
资源定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| [root@filer91 ~]
include "drbd.d/global_common.conf";
resource meta { on filer91 { device /dev/drbd0; disk /dev/sdb1; address 10.10.100.91:7788; meta-disk internal; } on filer92 { device /dev/drbd0; disk /dev/sdb1; address 10.10.100.92:7788; meta-disk internal; } } resource data { on filer91 { device /dev/drbd1; disk /dev/vg00/lv0; address 10.10.100.91:7789; meta-disk internal; } on filer92 { device /dev/drbd1; disk /dev/vg00/lv0; address 10.10.100.92:7789; meta-disk internal; } }
|
问题描述:
在其中一台机器重启后或心跳网络出现问题都有可能造成脑裂现象;(节点中出现Unknown)
1 2 3 4 5 6 7
| [root@filer92 ~] drbd driver loaded OK; device status: version: 8.3.10 (api:88/proto:86-96) GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by phil@fat-tyre, 2011-01-28 12:17:35 m:res cs ro ds p mounted fstype 0:meta WFConnection Secondary/Unknown UpToDate/DUnknown C 1:data StandAlone Secondary/Unknown UpToDate/DUnknown r-----
|
1 2 3
| [root@filer91 ~] 0:meta StandAlone Primary/Unknown UpToDate/DUnknown r----- /meta ext3 496M 17M 454M 4% 1:data StandAlone Primary/Unknown UpToDate/DUnknown r----- lvm-pv: data 0.29g 0.29g
|
处理方法:
选择次要节点(数据不准确的节点)
1 2 3 4 5 6
| [root@filer92 ~] [root@filer92 ~] [root@filer92 ~] [root@filer92 ~] [root@filer92 ~] [root@filer92 ~]
|
以上命令先是断开filer92节点的drbd连接,在设置该节点为secondary,最后通知drbd服务废弃该节点数据。
选择主节点并重新连接所有资源。
1 2 3
| [root@filer91 ~] 0:meta Connected Primary/Secondary UpToDate/UpToDate C r----- /meta ext3 496M 17M 454M 4% 1:data Connected Primary/Secondary UpToDate/UpToDate C r----- lvm-pv: data 0.29g 0.29g
|
1 2 3 4 5 6 7
| [root@filer92 ~] drbd driver loaded OK; device status: version: 8.3.10 (api:88/proto:86-96) GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by phil@fat-tyre, 2011-01-28 12:17:35 m:res cs ro ds p mounted fstype 0:meta Connected Secondary/Primary UpToDate/UpToDate C 1:data Connected Secondary/Primary UpToDate/UpToDate C
|
至此DRBD的脑裂问题已经解决。
还可以重新同步数据: