zoukankan      html  css  js  c++  java
  • drbd脑裂问题的解决

    DRBD产生脑裂的原因:

    (1. 采用HA环境的时候自动切换导致脑裂;

    (2. 人为操作或配置失误,导致产生的脑裂;

    (3. 经验有限,惭愧的很,只碰到以上2中产生脑裂的原因。

     

    如何判断脑裂行为?

    (1. 其中一个节点的连接状态始终为 StandAlone

    (2. 其中一个节点的连接状态始终为 WFConnection


    [root@master1 ~]# service drbd status;     #主节点状态

    drbd driver loaded OK; device status:

    version: 8.3.15 (api:88/proto:86-97)

    GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2

    m:res  cs          ro              ds                p      mounted  fstype

    1:data  StandAlone  Primary/Unknown  UpToDate/DUnknown  r-----  ext3     #存在StandAlone

    [root@master2 ~]# /etc/init.d/drbd status    #从节点状态

    drbd driver loaded OK; device status:

    version: 8.3.15 (api:88/proto:86-97)

    GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26

    m:res  cs          ro                ds                p      mounted  fstype

    1:data  StandAlone  Secondary/Unknown  UpToDate/DUnknown  r-----     #存在StandAlone


    从上边两个看出drbd已经发生脑裂,修复步聚如下:

    ——Primary节点

    如果Primary节点查看连接状态为 StandAlone ,需要手动连接 执行命令:drbdadm connect r0

    [root@master1 ~]# drbdadm connect data   #手动执行此命令 


    注意:上边的data是在/etc/drbd.conf中定义的resource的名称

    [root@master2 ~]# cat /etc/drbd.conf  | grep resource

    resource data {   #这就是资源名


    [root@master1 ~]# cat /proc/drbd    #查看执行后的drbd状态

    version: 8.3.15 (api:88/proto:86-97)

    GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26

    1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----

    ns:0 nr:0 dw:703 dr:15894 al:23 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:592

    ——Secondary节点操作

    1. 断开连接

    [root@master2 ~]# drbdadm disconnect data

    2.设置为secondary状态

    [root@master2 ~]# drbdadm secondary data

    3. 告诉slave,secondary 上的数据不正确,以primary 上的数据为准

    [root@master2 ~]# drbdadm -- --discard-my-data connect data  #注意中间的四个中间线

     


     

    ——查看结果

       master结果

    [root@master1 ~]# cat /proc/drbd

    version: 8.3.15 (api:88/proto:86-97)

    GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26

    1: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-----

    ns:0 nr:0 dw:703 dr:15894 al:23 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:592

        从节点结果

    [root@master2 ~]# cat /proc/drbd

    version: 8.3.15 (api:88/proto:86-97)

    GIT-hash: 0ce4d235fc02b5c53c1c52c53433d11a694eab8c build by mockbuild@builder10.centos.org, 2013-03-27 16:01:26

    1: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

    ns:0 nr:616 dw:210519 dr:8443 al:22 bm:32 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

    通过上述发现,drbd的脑裂问题已经解决。



    五. drbd的相关问题处理

    1. 脑裂之后的手工处理

    (1)首先在确定要作为secondary的节点上面切换成secondary并放弃该资源的数据:

    drbdadm disconnect resource_name/all

    drbdadm secondary resource_name/all

    drbdadm -- --discard-my-data connect resource_name/all

    (2)在要作为primary的节点重新连接secondary(如果这个节点当前的连接状态为WFConnection的话,可以省略)

    drbdadm connect resource_name/all

    2.主从都StandAlone的情况

    重启服务仍然无法链接成功,可以在两端分别执行:

    drbdadm disconnect resource_name/all

    drbdadm connect resource_name/all

    六. drbd相关命令的使用

    1. drbdsetup

    drbsetup是drbd 程序套件中的底层配置工具。您可以使用该工具把低层模块设备和drbd 设备联系起来、安装drbd设备对,以便镜像它们的低层模块设备和检查运行drbd 设备的配置。

    如:

    在节点node2上,您可以发出以下命令

    [root@node2 ~]# insmod drbd.o

    [root@node2 ~]# drbdsetup /dev/drbd0 disk /dev/vg01/lv01

    [root@node2 ~]# drbdsetup /dev/drbd0 net 10.160.100.33 10.160.100.32 B   #B:同步协议

    在节点node3上,您可以发出以下命令:

    [root@node2 ~]# insmod drbd.o

    [root@node2 ~]# drbdsetup /dev/drbd0 disk /dev/vg01/lv01

    [root@node2 ~]# drbdsetup /dev/drbd0 net 10.160.100.32 10.160.100.33 B

    [root@node2 ~]# drbdsetup /dev/drbd0  primary

    此时,您就可以像在其他设备一样使用/dev/drbd0 了。

  • 相关阅读:
    python3使用PyMysql连接mysql数据库
    MySQL知识总结
    python--正则表达式
    python之多线程
    python在windows和linux环境的进程对比及进程和进程之间的通信
    python基础之生成器(generator)
    python基础之动态添加属性和方法
    [STM32F1] 【转】STM32驱动MPU6050
    51单片机怎么使用MPU6050读取角度值程序 ??
    stm32f10x_lib.h
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/15740229.html
Copyright © 2011-2022 走看看