DRBD(Distributed Replicated Block Device)分布式块设备“网络 RAID”
1、DRBD:一种块设备,可以被用于高可用(HA)中,它类似于网络RAID-1功能,当数据写入本地文件系统时,数据还会被发送到网络中另一台主机上,以相同形式记录在一个文件系统中。本地(主节点)与远程主机(备节点)的数据可以保证实时同步。
在高可用(HA)中使用DRBD功能。可以代替使用一个共享磁盘阵,因为数据同步存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的备份数据就可以继续运行服务了。
+--------+
|文件系统|
+--------+
|
V
+------------+
| 块设备层 |
|(/dev/drbd1)|
+------------+
| |
| |
V V
+-----------+ +-------------+
| 本地硬盘 | | 远程主机硬盘|
|(/dev/hdb1)| | (/dev/hdb1) |
+-----------+ +-------------+
2、本章先实现本地和远程主机之间数据同步
A B
+-----------+ +-------------+
| 本地硬盘 |<--| 远程主机硬盘|
|(/dev/sda1)|-->| (/dev/sda1) |
+-----------+ +-------------+
主机A:node.a.com 44.44.44.1
主机B: node.b.com 44.44.44.2
DRBD数据同步
2.1、DRBD软件包x2
#rpm -ivh drbd83-8.3.2-6.el5_3.i386.rpm kmod-drbd83-xen-8.3.2-6.el5_3.i686.rpm
2.2、加载模块
#modprobe drbd #加载drbd模块
#dmesg | tail #查看drbd驱动是否加载成功
2.3、分别在A,B主机上修改DRBD配置文件,定义节点
#cp /usr/share/doc/drbd83-8.3.2/drbd.conf /etc/ #拷贝配置文件到/etc目录
# cat /etc/drbd.conf #修改主配置文件
common {
syncer { rate 80M; } #同步速度,根据实际网络带宽计算
}
resource ab { #自定义的设备名
protocol C;
on node.a.com { #主机域名
device /dev/drbd0; #drbd设备
disk /dev/sda; #同步的设备名
address 44.44.44.1:7788; #主机IP和端口号,drbd使用的是7788端口
meta-disk internal;
}
on node.b..com {
device /dev/drbd0;
disk /dev/sda;
address 44.44.44.2:7788;
meta-disk internal;
}
}
2.4、A、B主机执行drbd设备初始化
#debdadm create-md ab
--== Thank you for participating in the global usage survey ==--
The server's response is:
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created...
2.5、A、B主机启动drbd服务
#/etc/init.d/drbd start
#cat /proc/drbd #查看drbd设备主从
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff 5ca8c94234ce840e build by
[email protected], 2009-08-29 14:02:36
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:4999808
注:
以上命令查看会发现两个机器 都是secondary (从) ds:Inconsistent/Inconsistent
首次同步数据时(primary的数据同步到secondary上!!!)
|
V
要提升哪个机器,则在哪个机器 上敲如下命令!
# drbdsetup /dev/drbd0 primary -o
|
V
可以看到首次数据从 primary同步到secondary的过程
#watch -n 0.1 cat /proc/drbd #在A、B主机可以看到两台设备在同步数据
3、设置DRBD主从状态,并测试数据同步
只有状态为Primary,才可以挂载并读写
状态为secondary,不可以挂载,更不可以读,写
当前node.a.com的状态是Primary,我们来进行使用,可以看数据会被同步到node.b.com(secondary)
# mkfs.ext3 /dev/drbd0 #格式化分区
# mount /dev/drbd0 /mnt #挂载设备
# cd /mnt
#echo abcde > aa #生成aa文件
3.1、接着去secondary上看是否有数据
必须先把node.a.com降级(之前先umount )为secondary
然后把node.b.com升级为primary
然后在node.b.com挂载/dev/drbd0设备,看是否有数据
4、完成