一,什么是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.conf global { 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 /mnt lost+found [root@node4 ~]# cp /etc/fstab /mnt/ [root@node4 ~]# ls /mnt fstab lost+found [root@node4 ~]#
主从节点的切换
注意:切换前切记先卸载再进行主从的切换
至此drbd主从节点切换完成
实验过程主节点故障或重启服务,导致问题解决方案,问题特征如下图:
主节点提示正等待连接(WFConnection),而从节点显示(StandAline)的问题解决办法
要在从节点执行如下命令:
drbd-overview drbdadm down store drbdadm create-md store #store为定义的资源名称 drbdadm up store #store为定义的资源名称 drbd-overview #数据同步一致成功
脑裂故障解决请看链接