分别基于NFS服务和DRBD服务利用Corosync配置高可用(5)

这里只做单主模型的介绍。

单主模型:主节点可以实现数据的读写操作,从节点不能读也不能写。

1、安装服务和工具

# rpm -ivh drbd-8.4.3-33.el6.x86_64.rpm drbd-kmdl-2.6.32-358.el6-8.4.3-33.el6.x86_64.rpm

drbd共有两部分组成:内核模块和用户空间的管理工具。其中drbd内核模块代码已经整合进Linux内核2.6.33以后的版本中,因此,如果您的内核版本高于此版本的话,你只需要安装管理工具即可;否则,您需要同时安装内核模块和管理工具两个软件包,并且此两者的版本号一定要保持对应。
目前在用的drbd版本主要有8.0、8.2和8.3三个版本,其对应的rpm包的名字分别为drbd, drbd82和drbd83,对应的内核模块的名字分别为kmod-drbd, kmod-drbd82和kmod-drbd83。各版本的功能和配置等略有差异;我们实验所用的平台为x86且系统为rhel5.8,因此需要同时安装内核模块和管理工具。我们这里选用最新的8.3的版本(drbd83-8.3.8-1.el5.CentOS.i386.rpm和kmod-drbd83-8.3.8-1.el5.centos.i686.rpm),下载地址为:。

2、配置/etc/drbd.d/global-common.conf

global {
        usage-count no;
        # minor-count dialog-refresh disable-ip-verification
}
common {
        protocol C;
        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";
                # 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 120;
                #degr-wfc-timeout 120;
        }
        disk {
                on-io-error detach;
                #fencing resource-only;
        }
        net {
                cram-hmac-alg "sha1";
                shared-secret "mydrbdlab";
        }
        syncer {
                rate 1000M;
        }
}
3、定义一个资源/etc/drbd.d/web.res,内容如下:
resource mysql {
  on {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address  172.16.100.15:7789;
    meta-disk internal;
  }
  on {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address  172.16.100.16:7789;
    meta-disk internal;
  }
}

4、为节点提供配置文件

# scp  /etc/drbd.d/*  :/etc/drbd.d/

5、初始化资源,在两个节点分别执行:

# drbdadm create-md mysql

6、启动服务,在两个节点上分别执行:

# chkconfig --add drbd
# service drbd start

这里需要注意,一定要两个节点都启动服务,否则,启动服务的那个节点会一直等待下去。


7、查看启动状态:

# cat /proc/drbd
# drbd-overview

8、第一次提升一个节点为主节点
# drbdadm -- --overwrite-data-of-peer primary mysql 或者
# drbdsetup /dev/drbd0 primary -o

必须是主节点才可以挂载,不是主节点,必须先升级为主节点,才能挂载。


下列命令可以实现主从节点的切换

# drbdadm primary mysql
# drbdadm secondary mysql

再次查看

# drbd-overview
  0:web  SyncSource Primary/Secondary UpToDate/Inconsistent C r----
[============>.......] sync'ed: 66.2% (172140/505964)K delay_probe: 35

等数据同步完成以后再次查看状态,可以发现节点已经发生变化,且节点已经有了主次:


 # drbd-overview
  0:web  Connected Primary/Secondary UpToDate/UpToDate C r----

9、创建文件系统


文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:
升为主节点----》格式化-----》挂载
格式化只是在配置drbd时候需要,配置高可用的时候肯定格式化好了,而且已经有了mysql的数据文件
# mke2fs -j -L DRBD /dev/drbd0
# mkdir /mnt/drbd
# mount /dev/drbd0 /mnt/drbd

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/00293034d1571c518add125b2f610a76.html