DRBD简介:
DRBD全称DistributedReplicatedBlock(分布式的复制块设备),属于Device公司,但是完全开源。它是一款基于块设备的文件复制解决方案,速度比文件级别的软件如NFS,samba快很多,是很多中小企业的共享存储首选解决方案。
DRBD工作需要在两个节点上同时准备一块一模一样的分区组成镜像,这就是为什么它叫做分布式复制块设备,它主要通过复制数据来实现文件同步(备份),主要用于集群文件共享,我们通过它的工作原理来了解块复制和文件复制的不同,如下图:
首先,您需要知道,DRBD是工作在系统内核空间,而不是用户空间,它直接复制的是二进制数据,这是它速度快的根本原因。
其次,DRBD至少需要两个节点来工作,一主一次。
DRBD的文件同步过程和普通复制过程的不同:
DRBD在数据进入BufferCache时,先经过DRBD这一层,复制一份数据经过TCP/IP协议封装,发送到另一个节点上,另一个节点通过TCP/IP协议来接受复制过来的数据,同步到次节点的DRBD设备上。
下面我们来配置DRBD,前提:
1)主机名称和uname-n命令输出的一致,最好是FQDN格式
2)DRBD的两个分区大小一致,先不要格式化
3)两个节点上准备都准备一个2G的分区/dev/sda5
准备两台虚拟机,我使用的是vm6.5+redhat5.4,主机名称和IP地址如下
node1.a.org172.16.14.11
node2.a.org172.16.14.12
一.安装,修改配置文件
1)安装drbd软件包,需要的软件包如下:
[root@node1~]#lsdrbd/
drbd83-8.3.8-1.el5.centos.i386.rpmkmod-drbd83-8.3.8-1.el5.centos.i686.rpm
#使用rpm-i安装,这两个软件包并没有什么依赖关系
[root@node1drbd]#rpm-ivh*.rpm
[root@node2drbd]#rpm-ivh*.rpm
2)复制配置文件到/etc下
[root@node2drbd]#cp/usr/share/doc/drbd83-8.3.8/drbd.conf/etc/
cp:overwrite`/etc/drbd.conf’?Y#直接覆盖,原文件没有任何内容
[root@node2drbd]#cat/etc/drbd.conf
#Youcanfindanexamplein/usr/share/doc/drbd…/drbd.conf.example
#配置文件里只有下面两行,告诉我们定义在drbd.d下面定义.res结尾的文件为drbd的资源
include"drbd.d/global_common.conf";#真正的主配置文件
include"drbd.d/*.res";
#修改global_common.conf,内容如下
[root@node2 drbd]# vim /etc/drbd.d/global_common.conf global { usage-count no;}common { protocol C; # C 指同步 A 异步 B 半同步 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;fencing resource-only; } net {cram-hmac-alg "sha1"; shared-secret "mydrbdlab"; } syncer { rate 100M; # 你网卡的速率 }}
3)定义一个资源web,用来存放网页文件,给集群提供文件服务
resource web { on node1.a.org { # 注意主机名 device /dev/drbd0; disk /dev/sda5; # 分区 address 172.16.14.11:7789; # 注意IP meta-disk internal; } on node2.a.org { # 注意主机名 device /dev/drbd0; disk /dev/sda5; # 分区 address 172.16.14.12:7789; # 注意IP meta-disk internal; }}
4)将配置文件复制到node1上
[root@node2drbd]#scp/etc/drbd.confnode1:/etc/
[root@node2drbd]#scp/etc/drbd.d/*node1:/etc/drbd.d/
二.初始化已经以的资源,启动drbd服务
1)初始化资源
[root@node1drbd]#drbdadmcreate-mdweb
[root@node2drbd]#drbdadmcreate-mdweb
2)启动服务,这里需要说明,当一个节点启动服务后,如果另一个节点不启动,它会一直卡在那处于等待状态。
[root@node1drbd]#servicedrbdstart
[root@node2drbd]#servicedrbdstart
3)查看同步状态
[root@node1drbd]#watch-n1’cat/proc/drbd’
也可以通过下面的命令来查看
[root@node1drbd]#drbd-overview
0:webConnectedSecondary/SecondaryInconsistent/InconsistentCr—-
三.设置node1为主节点,开始数据同步
1)设置主节点
[root@node1drbd]#drbdsetup/dev/drbd0primary-o
或者drbdadm—-overwrite-data-of-peerprimaryweb
查看节点信息状态,已经成为primiary了,中间有一个数据同步过程
[root@node1drbd]#drbd-overview
0:webConnectedPrimary/SecondaryUpToDate/UpToDateCr—-
2)创建文件系统,挂载之
[root@node1drbd]#mke2fs-j-LDRBD/dev/drbd0
[root@node1drbd]#mkdir/mnt/drbd
[root@node1drbd]#mount/dev/drbd0/mnt/drbd/
创建几个空文件
[root@node1drbd]#cd/mnt/drbd/
[root@node1drbd]#touchabc
四.切换主节点
#先卸载,将node1改为次节点
[root@node1~]#umount/mnt/drbd/
[root@node1~]#drbdadmsecondaryweb
#在node2上设置为主节点
[root@node2~]#mkdir/mnt/drbd#穿件挂载点
[root@node2~]#drbdadmprimaryweb
[root@node2~]#drbd-overview
0:webConnectedSecondary/PrimaryUpToDate/UpToDateCr—-
[root@node2~]#drbdadmprimaryweb
查看刚才创建的文件是否存在
[root@node2~]#mount/dev/drbd0/mnt/drbd/
[root@node2~]#ls/mnt/drbd/
abclost+found
梦想从来不会选择人,它是上天赋予每个人构建未来蓝图的神奇画笔。