美文网首页
DRBD+heartbeat 实现双机热备

DRBD+heartbeat 实现双机热备

作者: Lisong | 来源:发表于2017-05-14 01:01 被阅读101次

实现环境

os:Centos 6.8
ip1:192.168.85.129 node1
ip2:192.168.85.130 node2
disk:/dev/sdb1 (一个10G的分区)

DRBD部署

DRBD安装

CentOS 6.x系统要升级到最新的内核才支持
CentOS 6.x
<pre>
rpm -ivh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
</b>
yum -y install drbd83-utils kmod-drbd83
</pre>

CentOS 7.x
<pre>
rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
</b>
yum install -y drbd84-utils kmod-drbd84
</pre>

加载模块:
modprobe drbd
检测DRBD是否安装成功
lsmod | grep drbd

两台机器时间同步,并修改/etc/hosts文件
192.168.85.129 node1
192.168.85.130 node2

两台主机分别修改主机名
hostname node1
hostname node2

修改配置文件(两台机器配置一样)

cat > /etc/drbd.d/global_common.conf <<EOF
global {
    usage-count yes; #是否参加DRBD使用者统计,默认是参加
}
common {
    protocol C; #使用DRBD的第三种同步协议,表示收到远程主机的写入确认后认为写入完成
    handlers {   
       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";
  }
    startup {
        wfc-timeout          240;
        degr-wfc-timeout     240;
        outdated-wfc-timeout 240;
    }
    disk {
        on-io-error detach;
    }
    net { #DRBD同步时使用的验证方式和密码
        cram-hmac-alg md5;
        shared-secret "testdrbd";
    }
    syncer {
       verify-alg sha1;                 # 定义网络传输速率,一般传输速度的30%
        rate 30M; #主节点和备用节点同步时最大的网络速率
    }
}
EOF

创建资源文件

cat >/etc/drbd.d/r0.res <<EOF
resource r0 { 
  on node1 {                                 #node1为第一台机器的机器名
    device     /dev/drbd0;            #创建的虚拟资源
    disk       /dev/sdb1;                #实际的物理分区,一定要注意,是一个单独的分区,而且是未经格式化的
    address    192.168.85.129:7898;     #第一台机器的ip地址,及通讯端口
    meta-disk  internal;                         #类型,局域网
  }
  on node2 {
    device     /dev/drbd0;
    disk       /dev/sdb1;
    address    192.168.85.130:7898;
    meta-disk  internal;
  }
}
EOF

将node1 的配置文件传送到node2 上

cd /etc/drbd.d
scp global_common.conf  r0.res root@node2:/etc/drbd.d/

在node1,node2 机器上分别创建数据块 r0 (r0为资源文件中的资源名)

drbdadm create-md r0

Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
表示创建成功

在两台机器都启动服务

/etc/init.d/drbd start

在node1 初始化网络硬盘

drbdsetup /dev/drbd0 primary -o 
cat /proc/drbd

在node1 主DRBD上格式磁盘,挂载并写入文件测试

mkfs.ext4 /dev/drbd0
mkdir /drbd
mount /dev/drbd0 /drbd
cd /drbd
touch {1,2,3}
umount /dev/drbd0
drbdadm secondary r0

在node2 从DRBD上,查看状态

cat /proc/drbd
mkdir /drbd
mount /dev/drbd0 /drbd
cd /drbd
ls
查看在node1 上创建的文件是否存在

Heartbeat部署

Heartbeat安装

install heartbeat

配置heartbeat

vi /etc/heartbeat/ha.cf
      logfacility     local0
      keepalive 2
      deadtime 10
      auto_failback off
      bcast   eth0
      node node1 node2

vi /etc/heartbeat/haresources
      node1 drbddisk::r0 Filesystem::/dev/drbd0::/drbd::ext4
 
vi /etc/heartbeat/authkeys
      auth 3
      3 md5 abc
 
 chmod 600 authkeys 

相同的配置复制到drbd2

cd /etc/heartbeat
scp authkeys haresources ha.cf root@node2:/etc/heartbeat/

确保服务都是正常运行的

/etc/init.d/drbd start
/etc/init.d/heartbeat start

切换测试

通过cat /proc/drbd 查看drbd的状态或者mount查看/drbd 是不是已经挂载确定资源所在的机器。然后在那台机器的/drbd 新建立一些文件并停掉那台机器上的heartbeat。看另一台机器上/drbd 是不是被自动挂载了呢?里面是不是有刚创建的文件?

相关文章

网友评论

      本文标题:DRBD+heartbeat 实现双机热备

      本文链接:https://www.haomeiwen.com/subject/mgvfxxtx.html