Pacemaker是一个集群资源管理器。它利用集群基础构件(OpenAIS、heartbeat或corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性。
pacemaker和corosync,后者用于心跳检测,前者用于资源转移。两个结合起来使用,可以实现对高可用架构的自动管理。 心跳检测是用来检测服务器是否还在提供服务,只要出现异常不能提供服务了,就认为它挂掉了。 当检测出服务器挂掉之后,就要对服务资源进行转移。
CoroSync是运行于心跳曾的开源软件。 PaceMaker是运行于资源转移层的开源软件。
corosync是集群框架引擎程序,pacemaker是高可用集群资源管理器,crmsh是pacemaker的命令行工具。
一·高可用集群实现
[root@server1 ~]# yum install pacemaker corosync -y
[root@server4 ~]# yum install pacemaker corosync -y
[root@server4 ~]# cd /etc/corosync/
[root@server4 corosync]# cp corosync.conf.example corosync.conf
[root@server4 corosync]# vim corosync.conf
[root@server4 corosync]# scp corosync.conf [email protected]:/etc/corosync/
[root@server4 corosync]# /etc/init.d/corosync start
[root@server1 corosync]# /etc/init.d/corosync start
配置文件:
crm管理工具
cib : cib管理模块
resource :所有的资源都在这个子命令后定义
cleanup :清理资源状态;
refresh : LRM本地资源管理更新CIB(集群信息库)
configure :编辑集群配置信息:
show :显示集群信息库;
edit:编辑集群信息库对象(vim模式下编辑);
delete删除CIB对象
primitive 定义资源;
monitor #对一个资源添加监控选项(如超时时间,启动失败后的操作);
group :定义一个组类型(将多个资源整合在一起)
node 集群节点管理子命令
status: 以xml格式显示节点状态信息
show:命令行格式显示节点状态信息;
standby:模拟指定节点离线(standby在后面必须的FQDN)
online 节点重新上
fence :隔离节点
options #用户优先级
server1和server4下载安装包:
crmsh-1.2.6-0.rc2.2.1.x86_64.rpm
pssh-2.3.1-2.1.x86_64.rpm
[root@server1 ~]# yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y
[root@server4 ~]# yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y
[root@server4 corosync]# crm_verify -VL ##检测
[root@server4 ~]# crm
crm(live)# configure
crm(live)configure# property stonith-enabled=false ##
crm(live)configure# commit ##提交
crm(live)configure# show ##显示
crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.41.100 cidr_netmask=24 op monitor interval=1min ##定义集群的虚拟ip和监控时间
crm(live)configure# commit ##提交
[root@server1 ~]# crm_mon ##监控
监控:
[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# show
crm(live)configure# property no-quorum-policy=ignore
##关闭集群对节点数量的检查,节点server1如果故障,节点server4收不到心跳请求
##直接接管程序,保证正常运行,不至于一个节点崩掉而使整个集群崩掉
crm(live)configure# commit
crm(live)configure# bye
bye
在server4中监控:
[root@server4 ~]# crm_mon ##监控
[root@server1 ~]# /etc/init.d/corosync stop ##关闭服务
[root@server1 ~]# ls
anaconda-ks.cfg haproxy-1.6.11.tar.gz pssh-2.3.1-2.1.x86_64.rpm
crmsh-1.2.6-0.rc2.2.1.x86_64.rpm install.log rpmbuild
haproxy-1.6.11 install.log.syslog
[root@server1 ~]# cd rpmbuild/
[root@server1 rpmbuild]# ls
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
[root@server1 rpmbuild]# cd RPMS/
[root@server1 RPMS]# ls
x86_64
[root@server1 RPMS]# cd x86_64/
[root@server1 x86_64]# ls
haproxy-1.6.11-1.x86_64.rpm
[root@server1 x86_64]# scp haproxy-1.6.11-1.x86_64.rpm [email protected]:/root
[root@server4 ~]# rpm -ivh haproxy-1.6.11-1.x86_64.rpm
[root@server1 x86_64]# cd /etc/haproxy/
[root@server1 haproxy]# ls
haproxy.cfg
[root@server1 haproxy]# scp haproxy.cfg [email protected]:/etc/haproxy/
[root@server1 haproxy]# crm
crm(live)# configure
crm(live)configure# primitive haproxy lsb:haproxy op monitor interval=1min
crm(live)configure# commit
crm(live)configure# group hagroup vip haproxy ##建立组
crm(live)configure# commit
server4监控:
[root@server1 haproxy]# crm_mon
监控:
二·含有fence设备的高可用集群实现
[root@foundation41 Desktop]# systemctl status fence_virtd.service
[root@foundation41 Desktop]# systemctl start fence_virtd.service
[root@server4 ~]# mkdir /etc/cluster/
[root@server1 ~]# mkdir /etc/cluster/
[root@foundation41 cluster]# scp -r fance_xvm.key [email protected]:/etc/cluster/
[root@foundation41 cluster]# scp -r fance_xvm.key [email protected]:/etc/cluster/
[root@server1 etc]# yum install -y fence-virt
[root@server4 etc]# yum install -y fence-virt
[root@server1 cluster]# crm
crm(live)# configure
crm(live)configure# primitive vmfence stonith:fence_xvm params pcmk_host_map="server1:test1;server4:test4" op monitor interval=1min ##添加vmfence
crm(live)configure# commit
crm(live)configure# property stonith-enabled=true ##将改为true
crm(live)configure# commit
测试:
[root@server4 cluster]# fence_xvm -H test1 ##检查fence
内核崩塌:
[root@server4 ~]# echo c > /proc/sysrq-trigger ##服务起在哪个节点崩溃哪个内核
[root@server1 cluster]# /etc/init.d/corosync start ##开启服务