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