一. drbd的工作原理
DRBD是可在高可用性(HA )中使用的块设备。 与网络RAID-1的功能类似。 当ssdbg向本地文件系统写入数据时,该数据也会发送到网络上的其他主机。 以同样的格式记录在文件系统中。 本地(主)和远程(远程)主机)的数据可以保证实时同步。 如果本地系统发生故障,远程主机将保留相同的数据,并可以继续使用。 高可用性)高可用性)允许使用DRBD功能来代替共享磁盘阵列。 由于数据同时存在于本地主机和远程主机上,因此在切换时远程主机只需使用该备份数据即可
二.环境布局:
1、操作系统: radhat 5.4
2、主服务器:
主机名:主体
IP:192.168.2.124
镜像的硬盘:/dev/hdb
3、备份服务器
主机名:假
IP:192.168.2.125
镜像的硬盘:/dev/hdb
三.安装drbd
1、下载源代码:
2、解压缩下载的drbd-8.3.5.tar.gz
[ root @ master ] # tarzxvf drbd-8.3.5.tar.gz
[root@master ]# cd drbd-8.3.5
[root@master ]# make
[root@master ]#make install
[ root @ master ] #加载并安装modprobe drbd @ drbd模块
[root@master ]# lsmod |grep drbd
drbd2717360
检查lsmod是否成功,如果输出了类似的内容,则表示drbd安装成功
[ root @ master ] # mknod/dev/drbd 0b 147 @创建硬件设备drbd
四.部署drbd
执行DRBD时,将读取名为/etc/DRBD.conf .的配置文件。 此文件描述了drbd设备与硬盘分区之间的映射关系,当数据写入磁盘并发送到网络时,将认为写入已完成。
1、drbd.conf配置参数说明
协议
ProtocolA @数据被写入磁盘并发送到网络后,将视为写入完成
ProtocolB @收到接收确认后判断写入操作完成。
ProtocolC @收到写入确认后,视为写入操作完成。
2、全球
global { usage-count yes; 默认情况下,是否参与DRBD用户统计信息是yes
3、通用
common { syncer { rate1M; }
@以字节为单位设置主节点同步时的网络速率最大值。
4、资源
DRBD设备或:/dev/drbdX被称为“资源”。 它包括DRBD设备的主要备份节点的ip信息、基础存储设备名称、设备大小、存储元信息的方式以及DRBD为外部提供的设备名称。
资源r0 {
协议c; 使用@协议c .时,在从远程主机收到写入确认后,写入操作将被视为完成。
net {
cram-hmac-alg sha1; @设定主站间通信使用的信息算法。
shared-secret 'FooFunFactory ';
}
@每个主机的说明以“on”开头,后跟主机名。 之后的{}将配置此主机。
大师{
device/dev/drbd0;
磁盘/dev/hdb;
address192.168.2.124:7898; @设置用于与其他主机通信的DRBD的监听端口
元数据-磁盘内部;
}
on slave{
device/dev/drbd0;
磁盘/dev/hdb;
address192.168.2.124:7898;
元数据-磁盘内部;
}
}
5、以下为测试时的完整配置
全球{
使用计数是;
}
common {
协议c;
}
资源r0 {
大师{
device/dev/drbd0;
磁盘/dev/hdb;
address192.168.2.124:7789;
meta-disk internal;
}
on slave {
device /dev/drbd0;
disk /dev/hdb;
address 192.168.2.125:7789;
meta-disk internal;
}
}
6、双机两个节点的配置文件是一模一样的。DRBD源码目录下有个样本,里面说得比较详细。
五、启动drbd
1、创建matadata
在启动DRBD之前,需要分别在两台主机的hdb分区上,创建供DRBD记录信息的数据块.分别在两台主机上执行:
[root@master ]#drbdadm create-md r0
[root@slave ]#drbdadm create-md r0
备注:
1)“r0”是在drbd.conf里定义的资源名称.
2)当执行命令”drbdadm create-md r0”时,出现以下错误信息。
Device size would be truncated, which
would corrupt data and result in
'access beyond end of device' errors.
You need to either
* use external meta data (recommended)
* shrink that filesystem first
* zero out the device (destroy the filesystem)
Operation refused.
Command 'drbdmeta 0 v08 /dev/xvdb internal create-md' terminated with exit code 40
drbdadm create-md r0: exited with code 40
解决办法:初始化磁盘文件格式,dd if=/dev/zero bs=1Mcount=1 of=/dev/sdXYZ; sync
[root@master ]# dd if=/dev/zero bs=1Mcount=1 of=/dev/hda3; sync
2.启动DRBD,分别在两台主机上执行
[root@master ]# /etc/init.d/drbd start
[root@slave ]# /etc/init.d/drbd start
备注:
如果在启动过程中找不到node时,查看是/dev/hda3是否是处于挂载状态,如果是,用umount命令取消挂载
3.查看DRBD的状态,分别在两台主机上执行
[root@slave drbd]# cat /proc/drbd
对输出的含义解释如下:
ro表示角色信息,第一次启动drbd时,两个drbd节点默认都处于Secondary状态,
ds是磁盘状态信息,“Inconsistent/Inconsisten”,即为“不一致/不一致”状态,表示两个节点的磁盘数据处于不一致状态。
Ns表示网络发送的数据包信息。
Dw是磁盘写信息
Dr是磁盘读信息
4、设置主节点
由于默认没有主次节点之分,因而需要设置两个主机的主次节点,选择需要设置为主节点的主机,然后执行如下命令:
[root@master]#drbdsetup /dev/drbd0 primary–o
或者执行下面命令也是可以的
[root@ master]#drbdadm -- --overwrite-data-of-peer primary all
第一次执行完此命令后,在后面如果需要设置哪个是主节点时,就可以使用另外一个命令:
[root@ master]#/sbin/drbdadm primary r0或者/sbin/drbdadm primary all
再次查看drbd状态,
可以看到现在状态已经是primary/secondary,而且磁盘信息是upTodat/Inconsistent(实时/不一致),而且已经开始同步两台机器对应磁盘的数据
过了一会,我们再次查看drbd状态,如下:
此时的状态信息就是primary/secondary,磁盘信息是UpToDate/UpToDate,说明已经同步完成了。
六、测试同步
把主机上的DRBD设备挂载到一个目录上进行使用。备机的DRBD设备无法被挂载,因为它是用来接收主机数据的,由DRBD负责操作。
主备节点切换有两种方式,分别是停止drbd服务切换和正常切换,依次介绍:1、停止drbd服务切换关闭主节点服务,此时挂载的drbd分区就自动在主节点卸载了,然后在备用节点执行切换命令:[root@drbd2 ~]#drbdadm primary all此时会报错:2: State change failed: (-7) Refusing to be Primary while peer is not outdated
Command 'drbdsetup 2 primary' terminated with exit code 11因此,必须在备用节点执行如下命令:[root@drbd2 ~]#drbdsetup /dev/drbd0 primary –o或者[root@drbd2~]#drbdadm -- --overwrite-data-of-peer primary all此时就可以正常切换了。当在备用节点执行切换到主节点命令后,原来的主用节点自动变为备用节点。无需在主用节点再次执行切换到备用节点的命令。2、正常切换在主节点卸载磁盘分区,然后执行[root@drbd1 ~]#drbdadm secondary all如果不执行这个命令,直接在备用节点执行切换到主节点的命令,会报错:2: State change failed: (-1) Multiple primaries not allowed by config
Command 'drbdsetup 2 primary' terminated with exit code 11接着,在备用节点执行[root@drbd2 ~]#drbdadm primary all最后在备用节点挂载磁盘分区即可:[root@drbd2 ~]#mount /dev/drbd0 /mnt
3、注意点
1)mount drbd设备以前必须把设备切换到primary状态。
2)两个节点中,同一时刻只能有一台处于primary状态,另一台处于secondary状态。
3)处于secondary状态的服务器上不能加载drbd设备。
4)主备服务器同步的两个分区大小最好相同,这样不至于浪费磁盘空间,因为drbd磁盘镜像相当于网络raid 1。
查阅相关文档: