DRBD+heartbeat+nfs

 

说明:DRBD实现存储同步,只有主存储角色才能实现读写、挂载和可执行。

      Heartbeat实现存储的高可用性和DRBD的资源管理,自动转换DRBD主备角色。

      Nfs实现文件共享,把磁盘共享出来让客户端访问。

Node1.sh.com: eth0  192.168.10.100

               eth1  192.168.2.101  (心跳线地址)

Node2.sh.com   eth0   192.168.10.101

               eth1  192.168.2.100  (心跳线地址)

虚拟地址(vip) 192.168.10.200   

客户端          192.168.10.110

DRBD+heartbeat+nfs_DRBD+heartbeat+nfs

一、DRBD的配置

1.两节点的主机名要能相互解析,在这里通过修改hosts文件实现,且保证两hosts文件一致

[root@node1 ~]# vim /etc/hosts

DRBD+heartbeat+nfs_nfs_02

[root@node1 ~]# scp /etc/hosts  node2.sh.com:/etc/   //hosts文件复制给node2节点

2.新建磁盘分区  (节点2 node2.sh.com做同样操作,分区要一模一样)

[root@node1 ~]# fdisk /dev/hdb

[root@node1 ~]# partprobe /dev/hdb  //加载显示磁盘分区

[root@node1 ~]# fdisk -l   //查看磁盘分区

DRBD+heartbeat+nfs_heartbeat_03

3.上传所需rpm包并安装  (节点2同样操作)

DRBD+heartbeat+nfs_nfs_04

[root@node1 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm

[root@node1 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm 

4.配置DRBD---分布式复制块存储设备

[root@node1 drbd.d]# vim /etc/drbd.conf

DRBD+heartbeat+nfs_DRBD_05

[root@node1 drbd.d]# cp -p global_common.conf global_common.conf.bak

[root@node1 drbd.d]# vim global_common.conf   //修改为以下内容

global {

        usage-count yes;

        # minor-count dialog-refresh disable-ip-verification

}

common {

        protocol C;

        startup {

                wfc-timeout  120;   

                degr-wfc-timeout 120;

         }

        disk {

                  on-io-error detach;

                  fencing resource-only;

          }

        net {

                cram-hmac-alg "sha1";

                shared-secret  "mydrbdlab";

         }

        syncer {

                         rate  100M;   //同步速率

         }

}

[root@node1 drbd.d]# touch  web.res   //创建资源文件

[root@node1 drbd.d]# vim web.res      //编辑资源文件,如下

resource  web {

        on node1.sh.com {

        device   /dev/drbd0;

        disk    /dev/hdb1;

        address  192.168.10.100:7789;

        meta-disk       internal;

        }   

        on node2.sh.com {

        device   /dev/drbd0;

        disk    /dev/hdb1;

        address  192.168.10.101:7789;

        meta-disk       internal;

        }   

}

[root@node1 drbd.d]# scp global_common.conf   node2.sh.com:/etc/drbd.d/   //把文件拷给节点2,保持数据一致性

[root@node1 drbd.d]# scp web.res   node2.sh.com:/etc/drbd.d/

[root@node1 drbd.d]# scp /etc/drbd.conf  node2.sh.com:/etc/

5.初始化并启动DRBD(两个节点要同时进行)

[root@node1 drbd.d]# drbdadm create-md web  //初始化

[root@node1 drbd.d]# service drbd start

6.查看节点1和节点2drbd状态

DRBD+heartbeat+nfs_nfs_06

DRBD+heartbeat+nfs_DRBD_07

[root@node1 drbd.d]# drbdadm -- --overwrite-data-of-peer primary web  //执行该条命令,把节点设为主节点

[root@node2 drbd.d]#  watch  -n 1 'cat /proc/drbd'    //在备份节点上查看同步进程

再次查看节点状态

DRBD+heartbeat+nfs_DRBD+heartbeat+nfs_08

DRBD+heartbeat+nfs_heartbeat_09

7.测试drbd

[root@node1 ~]# mkfs -t ext3 -L drbdweb  /dev/drbd0  //格式化分区,—L为卷标,drbdweb为卷标名,节点2做同样操作

[root@node1 ~]# mkdir /mnt/web   //创建挂载点

[root@node1 ~]# mount /dev/drbd0 /mnt/web

DRBD+heartbeat+nfs_DRBD_10

[root@node1 ~]# cd /mnt/web 

[root@node1 web]# echo "I am drbd" >./file   //建一测试文件,在node2上查看

[root@node1 ~]# umount /mnt/web  //先卸载

[root@node1 ~]# drbdadm secondary web  //把节点1设为备份

[root@node2 drbd.d]# drbdadm primary web  //把节点2设为主

查看节点12身份

DRBD+heartbeat+nfs_DRBD_11

DRBD+heartbeat+nfs_heartbeat_12

[root@node2 drbd.d]# mkdir /mnt/web  //在节点2上创建挂载点

[root@node2 ~]# mount /dev/drbd0 /mnt/web

[root@node2 ~]# cd /mnt/web

DRBD+heartbeat+nfs_DRBD+heartbeat+nfs_13 

二、nfs服务器配置  (节点2上同样操作

[root@node1 ~]# vim /etc/exports   //编辑内容如下

/mnt/web    *(rw,sync)

[root@node1 ~]# service portmap restart

Stopping portmap:                                          [  OK  ]

Starting portmap:                                          [  OK  ]

[root@node1 ~]# chkconfig portmap on

[root@node1 ~]# service nfs start

[root@node1 ~]# chkconfig nfs on

三、heartbeat服务搭建

上传所需文件

DRBD+heartbeat+nfs_nfs_14

[root@node1 ~]# mount /dev/cdrom /mnt/cdrom

[root@node1 ~]# yum -y localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm  perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck

[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/ha.cf  /etc/ha.d/

[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/authkeys  /etc/ha.d/

[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/haresources  /etc/ha.d/

[root@node1 ~]# cd /etc/ha.d

[root@node1 ha.d]# vim ha.cf   //编辑内容如下

    logfile /var/log/ha-log  //日志文件  

    keepalive 2    //保持时间

deadtime 10    //死亡时间
    warntime 5    //警告时间
    initdead 120   //启动时间
    udpport 694    //使用udp的端口
    bcast eth0     //心跳接口
    auto_failback on  //失败自动退回

ucast eth0 192.168.2.100  //要使用单播,指向节点2心跳地址

node  node1.sh.com

node  node2.sh.com

[root@node1 ha.d]# vim authkeys  //修改验证文件

    auth 1

    1 crc

[root@node1 ha.d]# chmod 600 authkeys

[root@node1 ha.d]# vim haresources  //编辑资源文件

 node1.sh.coIPaddr::192.168.10.200/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/mnt/web::ext3 

[root@node1 ha.d]# scp ha.cf authkeys haresources node2.sh.com:/etc/ha.d/  //把这三个文件复制给节点2

[root@node1 ha.d]# service heartbeat start   //启动heartbeat

查看资源

DRBD+heartbeat+nfs_heartbeat_15

四、客户端操作

[root@localhost ~]# service portmap start  //必须先启动portmap服务

[root@localhost ~]# service nfs start

[root@localhost ~]# showmount -e 192.168.10.200

Export list for 192.168.10.200:

/mnt/web *

[root@localhost ~]# mount 192.168.10.200:/mnt/web  /mnt/1

查看挂载

DRBD+heartbeat+nfs_DRBD+heartbeat+nfs_16

[root@localhost ~]# cd /mnt/1

DRBD+heartbeat+nfs_heartbeat_17

五、模拟节点1失效,查看客户端访问情况

[root@node1 ~]# cd /mnt/web   

[root@node1 web]# touch f{1,2,3}   //创建测试文件

[root@node1 ~]# cd /usr/lib/heartbeat/

[root@node1 heartbeat]# ./hb_standby   //使节点1成为备份

在节点2上查看

DRBD+heartbeat+nfs_nfs_18

在客户端查看

DRBD+heartbeat+nfs_nfs_19