CentOS 6.4下DRBD 安装配置

DRBD简介
DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制DRBD 是由内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。它允许用户在远程机器上建立一个本地块设备的实时镜像。与心跳连接结合使用,也可以把它看作是一种网络RAID。

DRBD工作机制翻译
Drbd 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。目前,drbd 每次只允许对一个节点进行读写访问,这对于通常的故障切换高可用性集群来讲已经足够用了。以后的版本将支持两个节点进行读写存取。

DRBD协议说明
A 数据一旦写入磁盘并发送到网络中就认为完成了写入操作。
B 收到接收确认就认为完成了写入操作。
C 收到写入确认就认为完成了写入操作。

软件下载列表地址:  http://oss.linbit.com/drbd/
环境介绍:
系统版本:CentOS 6.4 (32位)  内核版本  2.6.32-358.el6.i686
软件版本:drbd-8.4.3.tar.gz
主:10.0.7.103  从:10.0.7.104
为了方便实验,两台机器都各自加一块20G的硬盘
[root@localhost ~]# vim /etc/hosts
10.0.7.103    node1
10.0.7.104    node2
然后将刚刚添加的一块硬盘 sdb分区并格式化(步骤略)
[root@node1 ~]# mkdir /qq
[root@node1 ~]# mount /dev/sdb1  /qq (还要写到/etc/fstab里面,不然重启无效)
[root@node1 ~]# init 6
安装开始
yum  -y  install  kernel-devel      kernel-headers  flex
注意:安装kernel-devel一定要和你uname -r 看到的内核版本一致,建议kernel-devel用本地源安装,不要用网络源安装
[root@node1 soft]# tar zxf drbd-8.4.3.tar.gz
[root@node1 soft]# cd drbd-8.4.3
[root@node1 drbd-8.4.3]# ./configure --prefix=/usr/local/drbd --with-km
注意:--with-km是启用内核模块
[root@node1 ~]# make KDIR=/usr/src/kernels/2.6.32-358.el6.i686
注意KDIR的路径 (这个内核源码路径需要根据自己的系统修改)
[root@node1 drbd-8.4.3]# make install
[root@node1 ~]# mkdir -p /usr/local/drbd/var/run/drbd
[root@node1 ~]# cp /usr/local/drbd/etc/rc.d/init.d/drbd  /etc/rc.d/init.d/
[root@node1 ~]# chkconfig --add drbd
[root@node1 ~]# chkconfig drbd on
安装drbd模块
回到刚刚解压drbd的目录,然后
[root@node1 drbd-8.4.3]# cd drbd
[root@node1 drbd]# make clean
[root@node1drbd]#  make KDIR=/usr/src/kernels/2.6.32-358.el6.i686
[root@node1 drbd]# cp drbd.ko /lib/modules/`uname -r`/kernel/lib/
[root@node1 drbd]# modprobe drbd
查看模块是否加载成功
[root@node1 drbd]# lsmod | grep drbd
drbd                  292307  0
libcrc32c                841  1 drbd
##################################配置##################################
官方文档介绍:http://www.drbd.org/users-guide-8.4/
查看drbd的主配置文件
[root@node1 etc]# pwd
/usr/local/drbd/etc
[root@node1 etc]# cat drbd.conf
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example
include "drbd.d/global_common.conf";
include "drbd.d/*.res";
由此可见:主配置文件里面已经包含了全局配置文件和drbd目录下以.res结尾的文件
修改全局配置文件:
[root@node1 drbd.d]# pwd
/usr/local/drbd/etc/drbd.d
[root@node1 drbd.d]# ls
global_common.conf
配置文件内容如下:
[root@node1 drbd.d]# cat global_common.conf
global {
    usage-count yes; #是否参加drbd的使用者统计,默认此选项为yes
    # minor-count dialog-refresh disable-ip-verification
}
common {
        protocol C; #使用drbd的同步协议
    handlers {
        # These are EXAMPLE handlers only.
        # They may have severe implications,
        # like hard resetting the node under certain circumstances.
        # Be careful when chosing your poison.
        pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
        pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
        local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
        # fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
        # split-brain "/usr/lib/drbd/notify-split-brain.sh root";
        # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
        # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
        # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
    }
    startup {
        # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb
    }
    options {
        # cpu-mask on-no-data-accessible
    }
    disk {
                on-io-error detach; #配置I/O错误处理策略为分离
        # size max-bio-bvecs on-io-error fencing disk-barrier disk-flushes
        # disk-drain md-flushes resync-rate resync-after al-extents
                # c-plan-ahead c-delay-target c-fill-target c-max-rate
                # c-min-rate disk-timeout
    }
    net {
        # protocol timeout max-epoch-size max-buffers unplug-watermark
        # connect-int ping-int sndbuf-size rcvbuf-size ko-count
        # allow-two-primaries cram-hmac-alg shared-secret after-sb-0pri
        # after-sb-1pri after-sb-2pri always-asbp rr-conflict
        # ping-timeout data-integrity-alg tcp-cork on-congestion
        # congestion-fill congestion-extents csums-alg verify-alg
        # use-rle
    }
      syncer {
              rate 1024M; #设置主备节点同步时的网络速率
}
}
##########################资源配置文件配置如下  需自己新建####################
[root@node1 ~]# vim /usr/local/drbd/etc/drbd.d/drbd.res
resource  r1 {  #这个r1是定义资源的名字
          on  node1 {            #on开头,后面是主机名称
          device    /dev/drbd0;  #drbd设备名称
          disk      /dev/sdb1;  #drbd0使用的磁盘分区为sdb1
          address  10.0.0.105:7789; #设置drbd监听地址与端口
          meta-disk  internal;
      }
          on  node2 {            #on开头,后面是主机名称
          device    /dev/drbd0;  #drbd设备名称
          disk      /dev/sdb1;  #drbd0使用的磁盘分区为sdb1
          address  10.0.0.106:7789; #设置drbd监听地址与端口
          meta-disk  internal;
      }
}
#####################################################################
在node1上初始化资源
[root@node1 ~]# drbdadm create-md r1
启动服务
[root@node1 ~]# service drbd start
查看drbd监听端口:
[root@node1 ~]# netstat -anput|grep 7789
tcp        0      0 10.0.0.105:7789            0.0.0.0:*                  LISTEN      -                 
tcp        0      0 10.0.0.105:55715            10.0.0.106:7789            TIME_WAIT  -                 
tcp        0      0 10.0.0.105:41264            10.0.0.106:7789            TIME_WAIT

相关阅读:

 

相关推荐