集群:DRBD+corosync+pacemaker实现MySQL服务高可用(2)

3、配置DRBD
 
DRBD的主配置文件为/etc/drbd.conf;为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源。
 
在配置文件中,global段仅能出现一次,且如果所有的配置信息都保存至同一个配置文件中而不分开为多个文件的话,global段必须位于配置文件的最开始处。目前global段中可以定义的参数仅有minor-count, dialog-refresh, disable-ip-verification和usage-count。
 
common段则用于定义被每一个资源默认继承的参数,可以在资源定义中使用的参数都可以在common段中定义。实际应用中,common段并非必须,但建议将多个资源共享的参数定义为common段中的参数以降低配置文件的复杂度。
 
resource段则用于定义DRBD资源,每个资源通常定义在一个单独的位于/etc/DRBD.d目录中的以.res结尾的文件中。资源在定义时必须为其命名,名字可以由非空白的ASCII字符组成。每一个资源段的定义中至少要包含两个host子段,以定义此资源关联至的节点,其它参数均可以从common段或DRBD的默认中进行继承而无须定义。
 
下面的操作在node1.magedu.com上完成
1)复制样例配置文件为即将使用的配置文件:
# cp /usr/share/doc/drbd83-8.3.8/drbd.conf  /etc
 
2)配置/etc/drbd.d/global-common.conf,确保启用这些内容,#号为注释内容:
# vim /etc/drbd.d/global_common.conf
global {
        usage-count no;  不开启统计
}
 
common {
        protocol C;
 
        handlers {
                pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
                pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
                local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
              
        }
 
        startup {
                wfc-timeout 120;   等待连接的超时时间
                degr-wfc-timeout 120;   等待降级的节点连接的超时时间
                如上这两个也可以不定义,有默认值
        }
 
        disk {
                on-io-error detach;  当出现I/O错误,节点要拆掉drbd设备
        }
 
        net {
cram-hmac-alg "sha1";  使用sha1加密算法实现节点认证
  shared-secret "mydrbdlab";  认证码,两个节点内容要相同
        }
 
        syncer {
                rate 1000M;  定义同步数据时的速率
        }
}
 
3、定义一个资源/etc/drbd.d/MySQL.res,内容如下:
# vim /etc/drbd.d/mysql.res
添加如下内容:
resource mysql {
  on node1.magedu.com {
    device    /dev/drbd0;
    disk      /dev/sda3;
    address   172.16.30.4:7789;
    meta-disk internal;
  }
  on node2.magedu.com {
    device    /dev/drbd0;
    disk      /dev/sda3;
    address   172.16.30.6:7789;
    meta-disk internal;
  }
}
 
以上文件在两个节点node1,node2上必须相同,因此,可以基于ssh将刚才配置的文件全部同步至另外一个节点。
# scp  -r /etc/drbd.*  node2:/etc
 
4、在两个节点上初始化已定义的资源并启动服务:
 
1)初始化资源,在node1和node2上分别执行:
# drbdadm create-md mysql
 
2)启动服务,在node1和node2上分别执行:
/etc/init.d/drbd start
 
3)查看启动状态:
使用drbd-overview命令来查看:
# drbd-overview
  0:mysql  Connected Secondary/Secondary Inconsistent/Inconsistent C r----
 
从上面的信息中可以看出此时两个节点均处于Secondary状态。于是,我们接下来需要将其中一个节点设置为Primary,这里将node1设置为主节点,故要在node1上执行如下命令:
# drbdsetup /dev/drbd0 primary –o
 
而后再次查看状态,可以发现数据同步过程已经开始:
# drbd-overview
# drbd-overview
  0:mysql  SyncSource Primary/Secondary UpToDate/Inconsistent C r----
[======>.............] sync'ed: 36.0% (636728/987928)K delay_probe: 27 
等数据同步完成以后再次查看状态,可以发现节点已经处于同步状态,且节点已经有了主次:
# drbd-overview
  0:mysql  Connected Primary/Secondary UpToDate/UpToDate C r----
55555556
注:
Primary/Secondary 说明当前节点为主节点
Secondary/Primary 说明当前节点为从节点
 
5、创建文件系统
 
文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:
# mke2fs -j  /dev/drbd0
# mkdir /mydata
挂载设备:
# mount /dev/drbd0 /mydata
如果出现如下内容说明文件系统格式化完成:
# ls /mydata
  lost+found
 
6、切换Primary和Secondary节点
对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary。
 
node1上操作:
先卸载:
# umount /mydata
把本节点设为从节点:
# drbdadm secondary mysql
查看状态:
# drbd-overview
  0:mysql  Connected Secondary/Secondary UpToDate/UpToDate C r----
 
node2上操作:
设置本节点为主节点:
# drbdadm primary mysql
# drbd-overview
  0:mysql  Connected Primary/Secondary UpToDate/UpToDate C r----
# mkdir /mydata
# mount /dev/drbd0 /mydata
# ls /mydata
  lost+found
卸载设备:
# umount /mydata
 
如上所有内容正常,说明我们的DRBD已经正常安装配置完成!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/709138dbd9e2d012447a43387685b28f.html