什么是DRBD脑裂及如何模拟DRBD脑裂

什么是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 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据