DRBD双向同步

DRBD(Distributed Replicated Block Device),DRBD 号称是 “网络 RAID”,开源软件,由 LINBIT 公司开发.DRBD 实际上是一种块设备的实现,主要被用于 Linux 平台下的高可用(HA)方案之中.他有内核模块和相关程序而组成,通过网络通信来同步镜像整个设备,有点类似于一个网络 RAID-1 的功能.也就是说当你将数据写入本地的 DRBD 设备上的文件系统时,数据会同时被发送到网络中的另外一台主机之上,并以完全相同的形式记录在文件系统中.本地节点与远程节点的数据可以保证实时的同步,并保证 IO 的一致性.当本地节点的主机出现故障时,远程节点的主机上还会保留有一份完全相同的数据,可以继续使用,以达到高可用的目的。

环境:rhel6.5 192.168.2.108  

          rhel6.5 192.168.2.109

drbd版本:drbd-8.4.3.tar.gz

一.先在两台主机上分出各一块硬盘分区,做成LV。

1.由于环境采用的是两台虚拟机做实验,所以先给每台虚拟机,加了2G的虚拟用盘。

1.新加的硬盘进行分区

fdisk -cu /dev/sdb

2.先删除分区表

partx -d /dev/sdb

3.再增添分区表

partx -a /dev/sdb

4.制作pv

pvcreate /dev/sdb1

5.制作vg

vgcreate -s 8M drbdvg /dev/sdb1           PE大小为8M vg名为drbdvg

6.制作lv

lvcreate -n drbdlv -L 1G drbdvg               -n lv名称 -L lv 大小   vg名称

lvcreate -l 20 -n drbdlv drbdvg  这是lv的另外一种制作方法  -l指定lv大小为20个PE

注意:不能将需要挂载的磁盘格式化

二.安装drbd

1.yum install gcc flex rpm-build kernel-devel -y    #解决软件包依赖性

2.tar zxf drbd-8.4.3.tar.gz

3.cd drbd-8.4.3
4./configure --with-km --enable-spec  #这时候会报错说是 drbd-8.4.3.tar.gz 包不在 SOURCE 目录中

5cd /root/

6.rpmbuild -bb drbd.spec         生成rpmbuild目录

7cp drbd-8.4.3.tar.gz /root/rpmbuild/SOURCES/            #拷过去
8cd drbd-8.4.3
9#编译生成 drbd 的 rpm 包

rpmbuild -bb drbd.spec
10#编译生成内核模块

rpmbuild -bb drbd-km.spec
11cd ~/rpmbuild/RPMS/x86_64
12rpm -ivh *
13modprobe -l |grep drbd
#查看 drbd 的内核模块是否安装成功
拷贝生成的 rpm 包到 server2,安装并查看下内核模块。

三.配置drbd(两台主机都要配置)

1. vim /etc/drbd.d/drbd.res  #只要是以 res 结尾的文件都行,没有这些文件,这里需要新建
resource example {        #example 是资源的名字,可以随便定义,但后面会用到
meta-disk internal;          #metadata 的存放位置,  internal 表示将 meta 存放到 drbd 挂载的磁盘分区的最后的位置上

device /dev/drbd1;      #这个路径是最后做成的 drbd 设备的路径
syncer {
verify-alg sha1;
}
on desktop108.example.com {
disk /dev/drbdvg/drbdlv;        #这里是 server1 做成的 LV 的路径

address 192.168.2.108:7789;    #设置 drbd 的监听端口,用于与另一台主机通信

}
on desktop109.example.com {
disk /dev/drbdvg/drbdlv;
address 192.168.2.109:7789;    #这里是 server2 做成的 LV 的路径,可以跟 sever1 的不同,只要是本机的一块 lv 设备就行

}
}
2.将这个配置文件拷贝到另一台主机的配置文件中

3.接着分别在两台主机上执行以下命令:
(1)drbdadm create-md lee
(2)/etc/init.d/drbd start

出现如下提示,说明启动成功,如果有报错,检查配置文件

Starting DRBD resources: [
     create res: example
   prepare disk: example
    adjust disk: example
     adjust net: example

4.将192.168.2.108 设置为 primary 节点,并同步数据:
(在 192.168.2.108 上执行以下命令)
(1)drbdsetup /dev/drbd1 primary --force
(2)在两台主机上查看同步状态:
     watch cat /proc/drbd
(3)数据同步结束后创建并挂载文件系统:
       mkfs.ext4 /dev/drbd1

      mount /dev/drbd1 /var/www/
(4)存放数据:
            cp -r /etc/* /var/www/

(5)卸载文件系统:
            umount /dev/drbd1
(6)然后将主机设置为secondary节点

        drbdadm secondary example  

然后在另一台主机执行以下命令

(1)将主机设置为primary

drbdadm primary example
(2)挂载文件系统,查看数据是否同步:
   mount /dev/drbd1 /var/www/html
   注意:两台主机上的/dev/drbd1 不能同时挂载,只有状态为 primary 时,才能被挂载使
        用,而此时另一方的状态为 secondary。

四.metadata
drbd 将数据的各种信息块保存在一个专用的区域里,这些 metadata 包括了
a,DRBD 设备的大小
b,产生的标识
c,活动日志
d,快速同步的位图
metadata 的存储方式有内部和外部两种方式,使用哪种配置都是在资源配置中定义的
内部 meta data
内部 metadata 存放在同一块硬盘或分区的最后的位置上
优点:metadata 和数据是紧密联系在一起的,如果硬盘损坏,metadata 同样就没有了,同样在恢复的时候,metadata 也会一起被
恢复回来
缺点:metadata 和数据在同一块硬盘上,对于写操作的吞吐量会带来负面的影响,因为应用程序的写请求会触发 metadata 的更新,
这样写操作就会造成两次额外的磁头读写移动。
外部 meta data
外部的 metadata 存放在和数据磁盘分开的独立的块设备上
优点:对于一些写操作可以对一些潜在的行为提供一些改进
缺点:metadata 和数据不是联系在一起的,所以如果数据盘出现故障,在更换新盘的时候就需要认为的干预操作来进行现有 node 对
新硬盘的同步了







你可能感兴趣的:(linux,同步,drbd)