Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回)
一、准备前提
1、 准备2台服务器 , 分别为
Master : 192.168.232.164 (主服务器)
Slave : 192.168.232.165 (备份服务器)
注意:(Master , Slave)就是同时执行一样的操作
2、 关闭系统的防火墙和SELINUX , 避免试验中不必要的麻烦 (Master , Slave)
[root@localhost ~]#service iptables stop //如果存在SELINUX [root@localhost ~]#setenforce 0 [root@localhost ~]# vim /etc/sysconfig/selinux SELINUX=disabled
3、 设置host文件 , 追加一下内容 (Master , Slave)
[root@localhost ~]#vim /etc/hosts 192.168.232.164 Master 192.168.232.165 Slave
4、 在两天没分添加2块新硬盘 , 假设两台的硬盘都为sdb (Master , Slave)
[root@localhost ~]# fdisk /dev/sdb //输入 n à p -> 1 -> 默认 -> 默认 -> w 保存退出
5、 同步2台机器(Master , Slave)
[root@localhost ~]#ntpdate –u asia.pool.ntp.org
6、 更改主机名称 , 这里的名称是必须跟host的名称一致
---- Master --------
[root@localhost ~]#hostname Master [root@localhost ~]#vim /etc/sysconfig/network HOSTNAME=Master
--- Slave ----------
[root@localhost ~]# hostname Slave [root@localhost ~]# vim /etc/sysconfig/network HOSTNAME=Slave
二、配置DRBD
1、安装依赖安装包(Master,Slave)
[root@localhost ~]# yum install gcc gcc-c++ make glibc flex kernel-devel kernel-headers -y
2、安装DRBD(Master,Slave)
[root@localhost ~]#wget http://oss.linbit.com/drbd/8.4/drbd-8.4.3.tar.gz [root@localhost ~]#tar –xzvf drbd-8.4.3.tar.gz [root@localhost ~]#cd drbd-8.4.3 [root@localhost ~]#./configure –prefix=/usr/local/drbd –with-km [root@localhost ~]#make KDIR=/usr/src/kernels/2.6.32-279.e16.x86_64/ [root@localhost ~]#make install [root@localhost ~]#mkdir –p /usr/local/drbd/var/run/drbd [root@localhost ~]#cp /usr/loca/drbd/etc/rc.d/init.d/drbd /etc/rc.d/init.d [root@localhost ~]#chkconfig –add drbd [root@localhost ~]#chkconfig drbd on
//加载DRBD模块: [root@localhost ~]# modprobe drbd //查看DRBD模块是否加载 [root@localhost ~]# lsmod | grep drbd
3、生成虚拟的drbd块,用于存放sdb的数据(Master , Slave)
[root@localhost ~]#mknod /dev/drbd0 b 147 0
4、参数配置(Master , Slave)
[root@localhost ~]# vim /usr/local/drbd/etc/drbd.conf
#清空并添加一下配置 resource r0{ protocol C; startup { wfc-timeout 0; degr-wfc-timeout 120;} disk { on-io-error detach;} net{ timeout 60; connect-int 10; ping-int 10; max-buffers 2048; max-epoch-size 2048; } syncer { rate 30M;} #Master的配置 , device是后面生成虚拟区块 ,disk需要使用的硬盘 , address是ip地址加端口 on Master{ device /dev/drbd0; disk /dev/sdb1; address 192.168.232.164:7788; meta-disk internal; } on Slave{ device /dev/drbd0; disk /dev/sdb1; address 192.168.232.165:7788; meta-disk internal; } }
5、创建并激活r0资源(Master , Slave)
[root@localhost ~]#drvdadm create-md r0 //执行成功后 , 再输入一次激活r0 [root@localhost ~]#drvdadm create-md r0
6、 两台机子同时启动drbd服务(Master , Slave)
[root@localhost ~]#service drbd start
7、 分别查看两台机子的查询情况
[root@localhost ~]#service drbd status //m:res cs ro ds p mounted fstype //0:r0 Connected Secondary/Secondary Inconsistent/Inconsistent C //这里ro:Secondary/Secondary表示两台主机的状态都是备机状态,ds是磁盘状态,显示的状态内容为“不一致”,这是因为DRBD无法判断哪一方为主机,应以哪一方的磁盘数据作为标准
8、 将Master设置为主机主配置节点(Master)
[root@localhost ~]#drbdadm primary r0 [root@localhost ~]#service drbd status //查看ro的状态是否提升为了Primary , 同时也在Slave执行下状态查询ro在主从服务器上分别显示 Primary/Secondary和Secondary/Primary //ds显示UpToDate/UpToDate表示主从配置成功。
9、 挂载DRBD的硬盘到主硬盘上(Master)
//首先格式化盘/dev/drbd0 [root@localhost ~]##mkfs.ext3 /dev/drbd0 //挂载到Master的上 [root@localhost ~]##mkdir /data [root@localhost ~]##mount /dev/drbd0 /data //注:Secondary节点上不允许对DRBD设备进行任何操作,包括只读,所有的读写操作只能在Primary节点上进行,只有当Primary节点挂掉时,Secondary节点才能提升为Primary节点继续工作。 //在/data上写数据 [root@localhost ~]##cd /data [root@localhost ~]##touch a [root@localhost ~]##echo “test” > test //由于Master跟Slave通过相同的DRBD进行网络备份的 ,也是各自的硬盘/dev/sdb给了/dev/drbd0用,然后/dev/drbd0执行同步 , 现在Master挂载了/dev/drbd0 , 然后写入了数据,也就说明此时Slave中的/dev/drbd0也是有数据的了。
10、模拟Master宕机 , 然后Slave接管Primary
//(Master操作) [root@localhost ~]#cd / [root@localhost ~]#umount /data [root@localhost ~]#drbdadm secondary r0
//(Slave操作) [root@localhost ~]# drbdadm primary r0 [root@localhost ~]# service drbd status //查看Slave的状态是否已经成Primary
//将/dev/drbd0挂载到data , 查看salve是否同步 [root@localhost ~]# mkdir /data [root@localhost ~]# mount /dev/drbd0 /data [root@localhost ~]# cd /data [root@localhost ~]# ls //查看之前写入的数据是否存在 //重新追加新的数据进去 [root@localhost ~]#touch app [root@localhost ~]#echo "I am new app" > app //可以插入 , 此时已经大功告成的了, 如果你还感觉要测试多一次 , 将Slave再次设置为secondary , 然后再把Master设置成primary看Slave写入的数据是否存在
11、当之间存在Unknow或者之间宕机后,存在问题,使用官方解决方法
//(Slave操作) [root@localhost ~]# drbdadm secondary r0 [root@localhost ~]# drbdadm disconnect all [root@localhost ~]# drbdadm --discard-my-data connect r0
//(Master操作) [root@localhost ~]# drbdadm disconnect all [root@localhost ~]# drbdadm connect r0 [root@localhost ~]# drbdadm primary r0
版权声明:未经博主允许不得转载。https://yigainian.com/post-24.html