一、Corosync和pacemaker的了解:
Corosync是集群管理套件的一部分,他在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。也就是说,corosync是Messaging Layer集群信息层软件,需要pacemaker资源管理器,才能构成一个完整的高可用集群。它也是运行于心跳层的开源软件。(是集群框架引擎程序)
Pacemaker也就是Cluster Resource Manager(简称CRM),,是一个集群资源管理器。它利用群集基础构建(corosync或heartbeat)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务的最大可用性。
Pacemaker和corosync,前者用于资源的转移,后者用于心跳的检测。结合起来使用,实现对高可用架构的自动管理。心跳检测使用来检测服务器是否还在提供服务,若出现服务器异常,就认为它挂掉了,此时pacemaker将会对资源进行转移。
Crmsh是pacemaker的命令行工具。
二、高可用集群的配置(实现环境:关闭selinux和火墙)
主要实现的是,在server1和server4上安装corosync和pacemaker,当一个节点服务器出问题,则另一个节点服务器进行服务。
1)在server1和server4中安装pacemaker和corosync
---> yum install pacemaker corosync -y
2)在server1中配置corosync的配置文件,完成后复制到server4中
---> cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
---> vim /etc/corosync/corosync.conf #修改内容如下
---> scp /etc/corosync/corosync.conf server4:/etc/corosync/corosync.conf
3)在server1和server4中安装crm软件(软件包需要在网上下载)
---> yum install -y crmsh-1.2.6.0.rc2.2.1.x86_64.rpm pssh-2.3.1-4.1.x86_64.rpm
4)开启服务 (server1和server4均需要启动)
---> /etc/init.d/corosync start # 当corosync启动后,pacemaker也会启动
6)两个节点均crm_verify -VL 校验(会出现如下提示信息)
---> crm_verify -LV
# 出现错误时,我们可以设置STONITH的值,消除错误(Stonith 即shoot the other node in the head使Heartbeat软件包的一部分, 该组件允许系统自动地复位一个失败的服务器使用连接到一个健康的服务器的遥远电源设备。 Stonith设备是一种能够自动关闭电源来响应软件命令的设备 )
7)我们在server4中添加策略(ip和apache),在server1中进行监控
# 首先添加vip (完成之后,可以在server1的监控中看到)
# 添加参数,当结点server1坏掉的时候,server4会自动接管(也相当于忽略结点的检测)
在server1中执行 /etc/init.d/corosync stop后,在server4中监控结果为:
# 添加spache服务在集群中(警告:默认时间和自己设置的监控时间不同,忽略,它会以默认时间为准);但此时cpahce和vip不在同一主机上,需建立资源组,把vip和apache服务添加进去;(注意,添加进去的服务不需要手动启动,pacamaker会帮我们启动)
此时,server4中监控的情况为
7)此时,apache的高可用已经配置完成,我们可以进行测试。当运行的节点有问题时,会http会自动切换到另一个节点上。
三、含fence设备的高可用实现
在server1和server4中查看,是否有key文件。
1)在真机中安装软件
---> yum search fence-cirtd #查找相关软件
---> mkdir /etc/cluster # 创建密码生成目录
---> cd /etc/cluster
---> systemctl start fence-virtd.service # 启动服务(要关闭火墙)
2)将真机中生成的密钥发送给server1和server4
---> scp /etc/cluster/fence_xvm.key server1:/etc/cluster # 若在server1或4中没有cluster目录。创建即可
---> scp /etc/cluster/fence_xvm.key server4:/etc/cluster
---> yum install fence-virt-0.2.3-15.el6.x86_64 -y
4)在corosync的策略中添加fence(当节点有问题时,可以自启动)
crm(live)configure# primitive vmfence stonith:fence_xvm params pamk_host_map="server1:vm1;server4:vm4" op monitor interval=1min
4)在另一端监控情况如下:
5)测试,此时当我们对虚拟机server4使用命令---> echo c> /proc/sysrq-trigger 的时候,它会自动重启,并添加在可用节点里面。
注意:当添加vmfence时,出现 vmfence_start_0 on server1 'unknown error' (1)错误的时候,我们可以进行如下操作:(对之前的数据进行清除)