目录
什么是DRBD脑裂
脑裂(split brain)实际上是指在某种情况下,造成drbd的两个节点断开了连接,都以primary的身份来运行。当drbd某primary节点连接对方节点准备发送信息的时候如果发现对方也是primary状态,那么会会立刻自行断开连接,并认定当前已经发生split brain了,这时候他会在系统日志中记录以下信息:“Split-Brain detected,dropping connection!”当发生split brain之后,如果查看连接状态,其中至少会有一个是StandAlone状态,另外一个可能也是StandAlone(如果是同时发现split brain状态),也有可能是WFConnection的状态。
解决DRBD脑裂
如果DRBD出现脑裂,会在/var/log/message 出现一条日志:
Split-Brain detected but unresolved, dropping connection!
同时DRBD状态变为Unknown。
要解决这种情况,必须选择一个应丢弃其修改的节点,在要删除修改的节点上执行:
#drbdadm secondary db #db是资源名名 #drbdadm -- --discard-my-data connect all (或者使用资源组代替all)
在需要保留数据的另一节点上执行
#drbdadm connect db
注意:如果执行
drbdadm -- --discard-my-data connect all 时出错误 r0: Failure: (102) Local address(port) already in use. 那么先在主上执行drbdadm connect db,然后再到从上执行 drbdadm -- --discard-my-data connect all 就可以了
如何模拟Split-Brain
(1) 往主节点写入大文件,在未写入完前停止备节点的DRBD
(2) 停止主节点的DRBD
(3) 启动备节点的DRBD,设置为主节点.
(4) 启动原主节点的DRBD,这时发现它的状态就是Unknown,Split-Brain 情况出现。
一次DRBD脑裂行为的模拟
模拟总结:
1、DRBD的资源只能在主或辅的一台机器上挂载。
2、在做主辅的手工切换时的步骤:
a、先将原来挂载的东西进行卸载,这个时候你的应用会停,不建议手工切换主辅
b、将原来的主设置成辅 #drbdadm secondary resource_name
c、将原来的辅设置成主 #drbdadm primary resource_name
d、挂载资源
更多详情请见:
一次DRBD脑裂行为的模拟:http://myhat.blog.51cto.com/391263/606318/
0 条评论。