一次DRBD脑裂行为的模拟

转载 2015年07月10日 14:07:17

  1. drbd1为主,drbd2为辅;我个人觉得这个DRBD脑裂的行为,也应该是前期人为或是故障切换造成的,
  2. 如HA。 上次跟一朋友去一客户那里,他那就是属于使用HA做故障切换,最后不知道他们咋搞,在一台
  3. 机上把DRBD的服务给挂了,因为该服务器非常重要,他们对HA及DRBD架构不太熟,在一次HA切换测
  4. 试过程中出现了问题,在此模拟一下这个问题吧。 
  5.  
  6. 1、断开primary 
  7. down机或是断开网线 
  8. 2、查看secondary机器的状态 
  9. [root@drbd2 ~]# drbdadm role fs 
  10. Secondary/Unknown 
  11.  
  12. [root@drbd2 ~]# cat /proc/drbd  
  13. version: 8.3.11 (api:88/proto:86-96) 
  14. GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@drbd2.localdomain, 2011-07-08 11:10:20 
  15. #注意下drbd2的cs状态 
  16.  1: cs:WFConnection ro:Secondary/Unknown ds:UpToDate/DUnknown C r----- 
  17.     ns:567256 nr:20435468 dw:21002724 dr:169 al:229 bm:1248 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0 
  18.  
  19. 将secondary配置成primary角色 
  20. [root@drbd2 ~]# drbdadm primary fs 
  21. [root@drbd2 ~]# drbdadm role fs 
  22. Primary/Unknown 
  23. [root@drbd2 ~]# cat /proc/drbd  
  24. version: 8.3.11 (api:88/proto:86-96) 
  25. GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@drbd2.localdomain, 2011-07-08 11:10:20 
  26.  
  27.  1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r----- 
  28.     ns:567256 nr:20435468 dw:21002724 dr:169 al:229 bm:1248 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0 
  29. #挂载 
  30. [root@drbd2 ~]# mount /dev/drbd1 /mnt/ 
  31. [root@drbd2 ~]# cd /mnt/ 
  32. [root@drbd2 mnt]# ll 
  33. total 102524 
  34. -rw-r--r-- 1 root root 104857600 Jul  8 12:35 100M 
  35. drwx------ 2 root root     16384 Jul  8 12:33 lost+found 
  36.  
  37. #原来的primary机器好了,出现脑裂了。   
  38. [root@drbd1 ~]# tail -f /var/log/messages  
  39. Jul  8 13:14:01 localhost kernel: block drbd1: helper command: /sbin/drbdadm initial-split-brain minor-1 exit code 0 (0x0) 
  40. Jul  8 13:14:01 localhost kernel: block drbd1: Split-Brain detected but unresolved, dropping connection! 
  41. Jul  8 13:14:01 localhost kernel: block drbd1: helper command: /sbin/drbdadm split-brain minor-1 
  42. Jul  8 13:14:01 localhost kernel: block drbd1: helper command: /sbin/drbdadm split-brain minor-1 exit code 0 (0x0) 
  43. Jul  8 13:14:01 localhost kernel: block drbd1: conn( NetworkFailure -> Disconnecting )  
  44. Jul  8 13:14:01 localhost kernel: block drbd1: error receiving ReportState, l: 4! 
  45. Jul  8 13:14:01 localhost kernel: block drbd1: Connection closed 
  46. Jul  8 13:14:01 localhost kernel: block drbd1: conn( Disconnecting -> StandAlone )  
  47. Jul  8 13:14:01 localhost kernel: block drbd1: receiver terminated 
  48. Jul  8 13:14:01 localhost kernel: block drbd1: Terminating receiver thread 
  49.  
  50. [root@drbd1 ~]# drbdadm role fs 
  51. Primary/Unknown 
  52.  
  53. [root@drbd2 mnt]# drbdadm role fs 
  54. Primary/Unknown 
  55.  
  56. #drbd1现在是standalone,这个时候,主跟辅是不会相互联系的。 
  57. [root@drbd1 ~]# cat /proc/drbd  
  58. version: 8.3.11 (api:88/proto:86-96) 
  59. GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@drbd1.localdomain, 2011-07-08 11:10:38 
  60.  
  61.  1: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknown   r----- 
  62.     ns:20405516 nr:567256 dw:567376 dr:20405706 al:2 bm:1246 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0 
  63.  
  64. [root@drbd1 /]# service drbd status 
  65. drbd driver loaded OK; device status: 
  66. version: 8.3.11 (api:88/proto:86-96) 
  67. GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@drbd1.localdomain, 2011-07-08 11:10:38 
  68. m:res  cs          ro               ds                 p       mounted  fstype 
  69. 1:fs   StandAlone  Primary/Unknown  UpToDate/DUnknown  r-----  ext3 
  70.   
  71. 这个时候,如果用户有尝试把drbd2的drbd服务重启的话,你就会发现根本无法起来! 
  72. [root@drbd2 /]# service drbd start 
  73. Starting DRBD resources: [ ].......... 
  74. *************************************************************** 
  75.  DRBD's startup script waits for the peer node(s) to appear. 
  76.  - In case this node was already a degraded cluster before the 
  77.    reboot the timeout is 120 seconds. [degr-wfc-timeout] 
  78.  - If the peer was available before the reboot the timeout will 
  79.    expire after 0 seconds. [wfc-timeout] 
  80.    (These values are for resource 'fs'; 0 sec -> wait forever) 
  81.  To abort waiting enter 'yes' [ -- ]:[  13]:[  15]:[  16]:[  18]:[  19]:[  20]:[  22]: 
  82.  
  83. 在drbd2处理方法: 
  84. [root@drbd2 /]# drbdadm disconnect fs 
  85. [root@drbd2 /]# drbdadm secondary fs 
  86. [root@drbd2 /]# drbdadm -- --discard-my-data fs 
  87. 做完以上三步,你发现你仍然无法启动drbd2上的drbd服务;上次一客户我个人估计就是这个问题,把DRBD重启后,无法启动DRBD。
  88. 把他们DBA急的要死。呵呵
  89.  
  90.  
  91. 需要在drbd1上重连接资源: 
  92. [root@drbd1 ~]# drbdadm connect fs 
  93.  
  94. 再次启动drbd2上的drbd服务,成了。 
  95. [root@drbd2 /]# service drbd start 
  96. Starting DRBD resources: [ ]. 
  97.  
  98. 再看看资源同步: 
  99. [root@drbd2 /]# cat /proc/drbd  
  100. version: 8.3.11 (api:88/proto:86-96) 
  101. GIT-hash: 0de839cee13a4160eed6037c4bddd066645e23c5 build by root@drbd2.localdomain, 2011-07-08 11:10:20 
  102.  
  103.  1: cs:SyncTarget ro:Secondary/Primary ds:Inconsistent/UpToDate C r----- 
  104.     ns:0 nr:185532 dw:185532 dr:0 al:0 bm:15 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:299000 
  105.         [======>.............] sync'ed: 39.5% (299000/484532)K 
  106.         finish: 0:00:28 speed: 10,304 (10,304) want: 10,240 K/sec 

大伙来拍砖吧!

补充:虽然是手工模拟但在故障切换时也会出一样的问题。 1、DRBD的资源只能在或主或辅的一台机器上挂载。 2、在做主辅的手工切换时的步骤: a、先将原来挂载的东西进行卸载,这个时候你的应用会停,不建议手工切换主辅 b、将原来的主设置成辅 #drbdadm secondary resource_name c、将原来的辅设置成主 #drbdadm primary resource_name d、挂载资源   http://myhat.blog.51cto.com/391263/606318/

百度脑图入门

-
  • 1970年01月01日 08:00

drbd安装配置&&脑裂的处理办法

Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。   数据镜像:实时、透明、同步(所有服务...
  • houdaiye
  • houdaiye
  • 2016-06-14 14:22:51
  • 816

drbd脑裂问题处理

split brain实际上是指在某种情况下,造成drbd的两个节点断开了连接,都以primary的身份来运行。当drbd某 primary节点连接对方节点准备发送信息的时候如果发现对方也是...
  • liaoyuanzi
  • liaoyuanzi
  • 2012-12-26 16:41:36
  • 1375

drbd脑裂恢复

最近在弄服务器方面的东西。数据库高可用方面我使用了drbd+corosync+pacemaker的技术。drbd的原理是自动地将数据库数据同步,比如我有两个节点,相互连接,数据库修改后会自动同步到另外...
  • hengrjgc
  • hengrjgc
  • 2015-03-09 17:00:15
  • 891

DRBD脑裂问题处理记录

环境: DRBD资源池名称:jcluster 主节点primary 从节点secondary 挂载目录 /data 主要用到的命令: service drbd start service dr...
  • levy_cui
  • levy_cui
  • 2017-03-30 10:39:29
  • 222

DRBD原理及特性概述

Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。其核心功能通过Linux的内核实现,比文件系...
  • robinson_0612
  • robinson_0612
  • 2015-10-30 13:07:58
  • 3732

CentOS6安装NFS HA架构部署(NFS + Heartbeat + DRBD)

因业务需求,使用NFS共享服务,为了降低硬件故障导致的服务不可用,使用NFS + Heartbeat + DRBD架构实现NFS高可用。 一、安装配置drbd 1、测试环境: CentOS 6.4 主...
  • levy_cui
  • levy_cui
  • 2016-12-14 19:43:16
  • 1228

DRBD故障分类和恢复办法

DRBD故障和恢复办法测试 前置: drbd1主服务器;drbd2备服务器; 1、 正常情况下 a)        主服务器drbd1显示: b)        备服务器drbd2显...
  • jueqian
  • jueqian
  • 2015-07-20 10:57:58
  • 916

Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节

转载于老男孩linux运维:http://oldboy.blog.51cto.com/2561410/1240412 Heartbeat+DRBD+MySQL高可用架构方案与实施过程细节 ...
  • qq_19175749
  • qq_19175749
  • 2016-06-07 22:39:49
  • 3123

DRBD创建实现、步骤、注意事项

http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=%E7%B3%BB%E7%BB%9F%E7%AE%A1%E7%90%86:drbd%E7%9A%...
  • GuanxinQi
  • GuanxinQi
  • 2016-04-07 10:01:31
  • 3790
收藏助手
不良信息举报
您举报文章:一次DRBD脑裂行为的模拟
举报原因:
原因补充:

(最多只允许输入30个字)