天天看点

centos6.5 64位配置双机热备(corosync+pacemaker+crmsh)

1.网络配置情况见/etc/hosts

192.168.0.181 rs1 (eth0 业务) 

192.168.0.180 rs2 (eth0 业务)

10.10.10.2 rs1 (eth1 心跳线)

10.10.10.3 rs2 (eth1 心跳线)

虚拟IP:192.168.0.233

2.配置ssh互信

3.安装corosync,pacemaker

yum install epel* 

yum install corosync pacemaker -y

4.安装crmsh 

下载yum源文件到/etc/yum.repos.d

http://download.opensuse.org/repositories/network:/ha-clustering:/Stable/CentOS_CentOS-6/network:ha-clustering:Stable.repo

yum install crmsh* -y

5.配置corosync(将配置好的文件拷贝到另一个节点)

cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf

配置如下:

compatibility: whitetank

totem {

version: 2

secauth: on

threads: 2

interface {

ringnumber: 0

bindnetaddr: 10.10.10.0

mcastaddr: 239.255.10.1

mcastport: 5405

ttl: 1

}

}

logging {

fileline: off

to_stderr: no

to_logfile: yes

logfile: /var/log/cluster/corosync.log

to_syslog: no

debug: off

timestamp: on

logger_subsys {

subsys: AMF

debug: off

}

}

amf { 

    mode: disabled

}

service {

ver: 1

    name: pacemaker

}

aisexec {

user: root

        group: root

}

6.生成节点间通信时用到的认证密钥文件:

corosync-keygen

然后将生成的认证文件authkey权限修改为600并拷贝到另一个节点/etc/corosync目录

7.配置CIB(我这里使用的是crmsh这个工具配置的,也可以使用pcs)

[[email protected] corosync]# crm

crm(live)# configure

crm(live)configure# show

配置如下:

node rs1 \

        attributes standby=off

node rs2 \

        attributes standby=off

primitive pnode ocf:pacemaker:ping \

        params host_list=192.168.0.1 multiplier=100 \

        op monitor interval=10s timeout=5s \

        op start interval=0 timeout=60 \

        op stop interval=0 timeout=60

primitive vip IPaddr2 \

        params ip=192.168.0.233 nic=eth0 cidr_netmask=24 \

        op monitor interval=20s timeout=30s \

        meta target-role=Started

primitive web apache \

        params configfile="/etc/httpd/conf/httpd.conf" \

        op monitor interval=30s

group mywebcluster vip web \

        meta target-role=Started

clone cl_pnode pnode \

        meta globally-unique=false target-role=Started

location groupwithping mywebcluster \

        rule -inf: not_defined pingd or pingd lte 0

property cib-bootstrap-options: \

        dc-version=1.1.11-97629de \

        cluster-infrastructure="classic openais (with plugin)" \

        expected-quorum-votes=2 \

        stonith-enabled=false \

        no-quorum-policy=ignore \

        last-lrm-refresh=1422869866

rsc_defaults rsc-options: \

        resource-stickiness=50

8. 安装httpd服务测试,我们直接测试。

   修改httpd配置文件

   <Location /server-status>

    SetHandler server-status

    Order deny,allow

    Deny from all

    Allow from 127.0.0.1

   </Location>

   [[email protected] ~]# ip addr show 可以查看虚拟IP的情况

8.1 通过crm_mon可以看到资源运行在rs2上,那么我们断掉rs2的网口eth0(ifdown eth0) 看资源能否切到rs1上去

8.2 在资源运行的服务器上关闭Httpd服务,看服务器能自动自动否

8.3 关闭资源运行的服务器的电源,看资源能否切换到备用上面去

注意事项

1:上面的配置是2个节点,生产环节中建议配置奇数个节点,防止脑裂。

2:上面的配置中没有配置fence,如果我将任意一台的心跳线down掉 那么极易发生脑裂,生产环节中建议使用fence。

cib配置解释

rsc_defaults rsc-options: resource-stickiness=50 此配置是设置资源黏性,不明白的可以g.cn

no-quorum-policy=ignore 此配置是忽略投票策略,因为是2个节点需要忽略掉不然不会切换

stonith-enabled=false 此配置是不启用stonith,因为上述配置没有用到fence设备

primitive vip IPaddr2 \

        params ip=192.168.0.233 nic=eth0 cidr_netmask=24 \

        op monitor interval=20s timeout=30s \

        meta target-role=Started     此配置是定义虚拟IP资源

primitive web apache \

        params configfile="/etc/httpd/conf/httpd.conf" \

        op monitor interval=30s   此配置是定义httpd资源

primitive pnode ocf:pacemaker:ping \

        params host_list=192.168.0.1 multiplier=100 \

        op monitor interval=10s timeout=5s \

        op start interval=0 timeout=60 \

        op stop interval=0 timeout=60  此配置是定义pingd资源,此配置用来检测业务网

clone cl_pnode pnode \

        meta globally-unique=false target-role=Started 此配置是克隆pnode资源 意思就是让2个节点都运行此资源

group mywebcluster vip web \

        meta target-role=Started 此配置是 让vip和web成为一个资源组,为了避免vip 和web不再同一台服务器上运行

location groupwithping mywebcluster \

        rule -inf: not_defined pingd or pingd lte 0  此配置意思ping不通192.168.0.1了就切换资源组

最后附上软件版本:

[[email protected] ~]# rpm -q corosync pacemaker crmsh

corosync-1.4.7-1.el6.x86_64

pacemaker-1.1.12-4.el6.x86_64

crmsh-2.1-1.6.x86_64

继续阅读