一,什么是DRBD

DRBD(Distributed Replicated Block Device)分布式复制数据块设备:由linbit公司研发及开源,是一个由软件实现的、无共享的、服务器之间镜像块设备(同步的是数据块,不是文件,从英文就可以看出)内容的存储复制解决方案。可以被用于HA中,可以理解为网络上的网络RAID-1

二,实现原理简单描述

       使用DRBD,当用户将数据写到本地文件系统的同时,数据还会被发送到网络中的另一台主机上,以相同的形式记录在文件系统中,可以实现本地节点与远程主机的数据可以实现实时同步,本地主机故障时,远程主机上还会有一份相同的数据,保证了数据的不丢失。但是,有一个缺点,两个节点必须是主从关系,也就是说当前活动节点只能有一个能够读写,另一个只能处理于被动状态(接收数据或同步数据)且不能对外提供服务(不能同时读写的),只有当主节点故障了,从节点才能提供服务。

三,DRBD架设环境介绍及使用注意事项

       1)两台虚拟机,实现ssh免密码访问且计算机名称如下所示:

                   主机简称(主机名称)IP地址

                   node4(node4.mytest.com):172.16.251.24

node5(node5.mytest.com):172.16.251.25

       2)两台主机分别新建一个1G大小的分区(建议分区名称一致,实际生产中,最好是一块硬盘)

   3)所需要的软件包

drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm

drbd-8.4.3-33.el6.x86_64.rpm

      DRBD有两部分组成:内核模块工具和用户管理工具,分别为drbd 和drbd-kmdl,drbd内核模块已经整合到内核2.6.33以后的版本中,因此,对于内核版本高于2.6.33的系统,只安装用户管理工具即可;否则,您需要同时安装内核模块和用户管理工具两个软件包,且二者的版本号一定要保持对应。本实验环境中内核版本为CentOS 6.5 64bits(2.6.32-431.el6.x86_64),因此需要的DRBD内核模块工具版本为:drbd-kmdl-2.6.32-431.el6-8.4.3-33.el6.x86_64.rpm,用户管理工具:drbd-8.4.3-33.el6.x86_64.rpm

           4)软件包的安装及配置文件介绍(node4,5都要安装)

   5)安装后的文件路径,服务,配置文件介绍

       drbd的主配置文件为/etc/drbd.conf,为了管理的便捷性,目前通常会将些配置文件分成多个部分,且都保存至/etc/drbd.d/目录中,主配置文件中仅使用"include"指令将这些配置文件片断整合起来。通常,/etc/drbd.d目录中的配置文件为global_common.conf和所有以.res结尾的文件。其中global_common.conf中主要定义global段和common段,而每一个.res的文件用于定义一个资源用由用户自行定义。

   配置文件global_common.conf介绍

grep -v '^[[:space:]].*#' global_common.confglobal {    usage-count no;}common {    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 240;    }    options {    }    disk {        on-io-error detach;    }    net {        protocol C;        cram-hmac-alg "sha1";        shared-secret "shixinzheng521";    }    syncer {        rate 1000M;    }}

   配置文件/etc/drbd.d/web.res介绍(文件名自行定义,扩展名必须为res)

resource store {    on node4.mytest.com {        device /dev/drbd0;        disk /dev/sda3;        address 172.15.251.24:7789;        meta-disk internal;    }    on node5.mytest.com {        device /dev/drbd0;        disk /dev/sda3;        address 172.15.251.25:7789;        meta-disk internal;    }}

复制配置到节点node5(node5.mytest.com)

   启动drbd服务(node4,node5都要启动),

service drbd start

  查看同步的状态及设置主节点

drbd 8.4中第一次设置某节点成为主节点的命令

       # drbdadm primary --force store

  再次查看drbd状态

   注:对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary

   接着格式化drbd设备(在主节点上)

挂载设备到/mnt

[root@node4 ~]#[root@node4 ~]#[root@node4 ~]# mount /dev/drbd0 /mnt[root@node4 ~]# ls /mntlost+found[root@node4 ~]# cp /etc/fstab /mnt/[root@node4 ~]# ls /mntfstab  lost+found[root@node4 ~]#

主从节点的切换

注意:切换前切记先卸载再进行主从的切换

至此drbd主从节点切换完成

实验过程主节点故障或重启服务,导致问题解决方案,问题特征如下图:

       主节点提示正等待连接(WFConnection),而从节点显示(StandAline)的问题解决办法

要在从节点执行如下命令:

drbd-overviewdrbdadm down storedrbdadm create-md store    #store为定义的资源名称drbdadm up store   #store为定义的资源名称drbd-overview   #数据同步一致成功