高可用集群实验四:DRBD+corosync+pacemaker

在上一篇文章基础上,在两台服务器上添加DRBD,并通过corosync+pacemaker来启动:

先说明一下:实验中用的操作系统为CentOS 6.4 (内核版本为2.6.32-358.e16.x86_64),并没有自带drbd内核模块(2.6.33开始才有自带),需要自己添加。而网上找到的rpm包对CentOS 6.4的识别有问题,一直提示需要2.6.32-358.e16.x86_64的内核(实际上本身就是这个版本),网上也有其它人说在CentOS6.4上装有问题。所以下面的例子就不通过rpm包安装了,而是直接从官网下载源码编译安装。

在两台服务器上

1.各新加一块磁盘/dev/sdb.

2.创建新分区sdb1:

fdisk /dev/sdb

partprobe /dev/sdb1

3.安装内核开发相关工具包:

yum  -y  install  kernel-devel    kernel-headers  flex  gcc

4.解压缩源码、编译并添加为服务:

tar zxf drbd-8.4.3.tar.gz

cd drbd-8.4.3

./configure --with-km

make KDIR=/usr/src/kernels/2.6.32-358.el6.x86_64

make install

mkdir -p /usr/local/var/run/drbd  # 必须加这个目录

cp /usr/local/etc/rc.d/init.d/drbd  /etc/rc.d/init.d/

#与rpm安装不同的是,源码安装后相应的配置文件路径为/usr/local/etc/……

chkconfig --add drbd

chkconfig drbd on

cd drbd

make clean

make KDIR=/usr/src/kernels/2.6.32-358.el6.x86_64

cp drbd.ko /lib/modules/`uname -r`/kernel/lib/

modprobe drbd

6.查看模块是否已添加:

lsmod | grep drbd

在其中一台上
1.添加修改文件:
vim/usr/local /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 "thisissecret";
        }
       syncer {
  rate 500M;
        }
}

2.添加资源文件:
vim /usr/local/etc/drbd.d/drbdweb.res
resource drbdweb {
    device    /dev/drbd0;
    disk      /dev/sdb1;
    meta-disk internal;
    on node1.test.net {
        address   192.168.1.2:7789;
    }
    on  node2.test.net {
        address   192.168.1.3:7789;
    }
}
3.将配置文件拷到另一台上:
    scp -r /usr/local/etc/drbd.*  192.169.1.3:/usr/local/etc/

两服务器上初始化资源并启动服务,并查看状态:
    drbdadm create-md drbdweb
    service drbd start
    cat /proc/drbd
    drbd-overview

在其中一台上:
1.设置成primary:
    drbdadm -- --overwrite-data-of-peer primary drbdweb
2.进行格式化并挂载
    mkfs.ext4 /dev/drbd0
    mkdir /drbd
    mount /dev/drbd0 /drbd
3.随便创建一个文件、卸载、设置成secondary
    touch /drbd/something
    umount/drbd
    drbdadm secondary drbdweb

在另一台上升级为primary,挂载并查看是否有刚才创建的文件:
    drbdadm primary drbdweb
    drbd-overview
    mkdir /drbd
    mount /dev/drbd0 /drbd
    ls /drbd

至此,DRBD实验就已经完成了。

这里顺便插入说一下:在下面的实验过程中如果某些操作有问题导致DRBD脑裂(split-brain)时,需要手工解决才能继续使用,方法如下:
1.选择其中一个节点丢弃:
    drbdadm secondary <resource>
    drbdadm connect --discard-my-data <resource>
2.另一个节点:
    drbdadm connect <resource>
更详细内容可参考官方文档:http://drbd.linbit.com/users-guide/s-resolve-split-brain.html

下面是进行corosync+pacemaker来接管DRBD:

在两台服务器
1.卸载和服务停止:
    umount /mnt/drbd
    service drbd stop
    chkconfig drbd off
2.更改配置文件:
vim /etc/corosync/corosync.conf

实际上就是在上个实验的配置文件上添加以下内容:
 # 定义corosnyc的工作用户,需要使用root用户
aisexec {                        
     user: root  
     group: root  
}
3.启动服务
    service corosync start

在其中一台上:
1.查看资源代理
    crm ra list ocf linbit
    crm ra info ocf:linbit:drbd
2.添加资源和约束:
    crm
    configure primitive resdrbdweb ocf:linbit:drbd params drbd_resource=drbdweb op start timeout=240s op stop timeout=100s
    configure ms ms_bdrbdweb resdrbdweb meta master-max=1 master-node-max=1 clone-max=2 clone-node-max=1
    configure primitive drbdfs ocf:heartbeat:Filesystem params device="/dev/drbd0" directory="/drbd" fstype="ext4" op start timeout=60s op stop timeout=60s
    configure colocation drbdfs_and_ms_drbdweb inf: drbdfs ms_drbdweb:Master
    configure order ms_drbdweb_before_drbdfs Mandatory: ms_drbdweb:promote drbdfs:start
3.最终结果如下:
    configure show

上图中的 reshttpd 和resip是上个实验的配置,这里可忽略

自切换测试:

1.查看状态:

crm status

2.在主节点上创建文件,并切换成standby:

touch /drbd/another

crm node standby

3.在另一台上查看状态切换及文件同步:

crm status

ls /drbd/

4.将刚才设置成standby的服务器再次上线:

crm node online

时间: 2024-10-05 16:16:55

高可用集群实验四:DRBD+corosync+pacemaker的相关文章

简单的高可用集群实验

前言: 上文介绍了高可用集群的基本概念,下面让我们来试试用两台提供web服务的虚拟机来实现一个小小的高可用集群吧- 首先,配置一个高可用集群的前提有: 1.至少两个节点: 2.共享存储(为了提供的页面一致,需要在后端用某些机制来实现.这里我们就做个简单的实验,后端存储先不考虑.先让这两个节点各自提供一个不同的页面,方便我们知道哪台在提供服务): 3.STONIN(共享存储时为了避免争用资源,指挥特定的设备,如电源交换机等避免共享存储的崩溃,所以一般的集群都得需要这个否则它会不工作的哦~~这里我们

高可用集群实验三:pacemaker+corosync

在前一篇文章的拓扑中将两台Director去掉后进行以下操作. 两台服务器上ssh互信ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] yum -y install pacemaker#在centos 6.4 上,yum安装pacemaker时会自动安装corosync 在Server1上:1.改配置文件:cd /etc/corosynccp corosync.co

高可用集群实验二:keepalived+lvs实现故障自迁移

一.承接上一篇文章,按上面拓扑做修改: 1.新增一台Director,eth1的IP 192.168.1.5 2.旧Director添加一起网卡eth0(IP 10.0.0.1/24)直连新Director的eth0(IP 10.0.0.2/24) 3.删除.旧Director的eth1:0 二.两台Director都进行以下操作: 1.关闭ipvsadm: chkconfig ipvsadm off service ipvsadm off 2..通过ssh-keygen互信 ssh-keyge

corosync+pacemaker and drbd实现mysql高可用集群

DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的,另外的节点是不可读的,连挂载都不可能,只有一个节点是主的,其它节 点都是从的.当做为主主架构时,需要达到几个条件,1.在高可用集群中启用DRBD;  2. 启用分布式文件锁功能,即需要把磁盘格式化为集群文件系统(如GFS2,OCFS2等):3. 把DRBD做成资源. 数据的存储过程: 当某个进程存

基于Corosync + Pacemaker+DRBD实现MySQL高可用集群

前言 在众多的高可用集群解决方案中,除了Heartbeat之外,Corosync也能提供类似于Heartbeat一样的功能,而且目前RedHat官方提供的高可用集群解决方案的程序包都以Corosync为主,所以在未来的日子Corosync会逐渐取代Heartbeat.本文带来的是基于Corosync + Pacemaker+DRBD的MySQL高可用集群解决方案. 相关介绍 Corosync Corosync是从OpenAIS中分支出来的一个项目,它在传递信息的时候可以通过一个简单的配置文件来定

高可用集群corosync+pacemaker+drbd+httpd----手动配置篇

共享存储高可用方案 -----DRBD Drbd  :Distributed Replicated Block Device 高可用集群中的文件共享方案之一 共享存储的常见实现方式 DAS:直接附加存储 Direct attached storage:通过专用线缆直接连接至主板存储控制器接口的设备成为直接附加存储.,如外置的raid阵列 并行口: IDE  SCSI 两种接口的区别: ide接口的存取过程: 首先将从文件的读取说起;当用户空间进程要读写文件时首先向内核发起系统调用,然后进程有用户

cosync+pacemaker+DRBD共享存储实现mysql高可用集群

DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的,另外的节点是不可读的,连挂载都不可能,只有一个节点是主的,其它节点都是从的.当做为主主架构时,需要达到几个条件,1.在高可用集群中启用DRBD;  2. 启用分布式文件锁功能,即需要把磁盘格式化为集群文件系统(如GFS2,OCFS2等):3. 把DRBD做成资源. 数据的存储过程:当某个进程存储数据

Linux集群系列——高可用集群之corosync基础概念及安装配置.

高可用衡量标准 :corosync : 集群管理引擎 SA Forum -->OpenAIS-->Wilson-->corosync 向后延伸为衍生出来的版本REHL 6.x RHCS :corosyncREHL 5.x RHCS :OpenAIS , cman ,rgmanager corosync : Messaging Layer 需要CRM (+ pacemaker)SUSE Linux Enterprise server Hawk WEB GUILCMC : Linux Clu

基于Keepalived实现LVS双主高可用集群

前言 前面说过基于heartbeat的LVS高可用方案,今天带来另一种解决方案:基于Keepalived实现LVS双主高可用集群.什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生.本文将详细讲述Keepalived工作原理及高可用解决方案的实现. 相关介绍 Keepalived简介 Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余