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: dd7985327f146f33b86d4bff5ca8c94234ce840e build by mockbuild@v20z-x86-64.home.local,  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、完成