2016122402353821637.jpg  

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 

版权声明:未经博主允许不得转载。http://smister.com/post-24.html