pacemaker

Pacemaker是一个集群资源管理器。它利用集群基础构件(OpenAIS 、heartbeat或corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性。俗称,心脏起搏器

Screenshot from 2018-02-12 18-25-58.png


说到高可用,我们可能会用heartbeat和keepalived,也可能会用corosync+pacemaker,但他们之间有什么区别呢?我们在此主要谈下heartbeat和corosync+pacemaker之间的渊源。
  Heartbeat到了v3版本后,拆分为多个子项目,其中pacemaker就是拆分出来的资源管理器。Heartbeat 3.0拆分之后的组成部分:为:
1.Heartbeat:将原来的消息通信层独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们之前通信,被称为基础组件;(注意与corosync区别)
2.cluster-glue相当于一个中间层,可以将heartbeat和crm(pacemaker)联系起来,主要包含2个部分,LRM和STONITH;
3.Resource Agent:用来控制服务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。
4.Pacemaker也就是Cluster Resource Manager (简称CRM),用来管理整个HA的控制中心,客户端通过pacemaker来配置管理监控整个集群。它不能提供底层心跳信息传递的功能,它要想与对方节 点通信需要借助底层(新拆分的heartbeat或corosync)的心跳传递服务,将信息通告给对方。
另,pacemaker管理资源的工具由命令行界面的crmsh、pcs和图形化界面pygui、hawk等进行管理,我们使用pcs链进行资源管理。
  通过以上,我们了解了pacemaker的由来,下面我们再来看下集群底层新拆分的heartbeat和corosync之间的区别:
1.配置文件的版本管理:Heartbeat只能为所有的资源配置一个主服务,而corosync则允许为不同的资源组配置不同的主服务
2.管理资源的灵活性:在corosync中,其会自行处理配置文件的同步问题,heartbeat则无此功能
3.分组管理:Heartbeat只支持2个节点,而corosync则支持多个节点的集群,支持把资源进行分组,按照组进行资源的管理,设置主服务,自行进行启停
4.配置复杂度:Heartbeat非常容易进行配置,第一次配置可能只需要几分钟,而Corosync由于有一定的复杂度则需要一点耐心
  因此,一般来说都是选择corosync来进行心跳的检测,搭配pacemaker的资源管理系统来构建高可用的系统,下面我们就来介绍下corosync+pacemaker构建高可用系统。



实验

这次实验是基于上次的haproxy实验所做的

实验环境

server1       haproxy主机

server2       http主机

server3       http主机

server4       haproxy主机

在之前的实验中,server1主机已经配置完成,保持server4与server1配置一致


从server1将安装包和配置文件发送到server4上

[root@server1 x86_64]# scp haproxy-1.6.11-1.x86_64.rpm root@192.168.122.14

[root@server1 haproxy]# scp haproxy.cfg root@192.168.122.14:/etc/haproxy/
[root@server1 security]# pwd
/etc/security
[root@server1 security]# scp limits.conf root@192.168.122.14:/etc/security/

[root@server4 ~]# rpm -ivh haproxy-1.6.11-1.x86_64.rpm  安装



创建用户,修改文件,开启服务


Screenshot from 2018-02-12 18-58-26.png

Screenshot from 2018-02-12 18-57-46.png

server1和server4均改


Screenshot from 2018-02-12 19-02-30.png


[root@server1 ~]# yum install pacemaker corosync -y     安装服务

[root@server4 ~]#  yum install pacemaker corosync -y    安装服务


Screenshot from 2018-02-12 19-50-06.png

修改配置文件(网段)


Screenshot from 2018-02-12 19-49-06.png


Screenshot from 2018-02-12 19-49-56.png


[root@server1 corosync]# scp corosync.conf root@192.168.122.14:/etc/corosync/   发给server4

Screenshot from 2018-02-12 19-53-52.png


开启server1,4的服务

Screenshot from 2018-02-12 19-55-00.png


Screenshot from 2018-02-12 19-55-11.png


[root@server1 ~]# yum install -y crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm   安装

[root@server4 ~]# yum install -y crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm   安装


[root@server1 ~]# crm 进入查看

Screenshot from 2018-02-13 09-44-14.png


检查配置文件是否正确

[root@server4 ~]# crm_verify -LV

Screenshot from 2018-02-13 09-46-14.png

保证数据安全性,pacemaker默认启动stonith,但是我们没有配置stonith,因此报错


在物理机打开服务

Screenshot from 2018-02-13 09-47-50.png

[root@server1 ~]# crm

Screenshot from 2018-02-13 09-49-53.png

再次运行,不会报错

Screenshot from 2018-02-13 09-58-34.png


在server1端,加入VIP

Screenshot from 2018-02-13 10-03-05.png


[root@server4 ~]# crm_mon (监控)

Screenshot from 2018-02-13 10-04-36.png


物理机



当关掉server1端的服务时

[root@server1 ~]# /etc/init.d/corosync stop

server4端如下显示

Screenshot from 2018-02-13 10-06-22.png

打开server1端服务

Screenshot from 2018-02-13 10-07-19.png

监控端

Screenshot from 2018-02-13 10-07-23.png

添加策略使高可用

crm(live)configure# property no-quorum-policy=ignore (实现高可用)

Screenshot from 2018-02-13 10-08-47.png

Screenshot from 2018-02-13 10-09-59.png

监控端

Screenshot from 2018-02-13 10-10-25.png

加入组

Screenshot from 2018-02-13 10-11-47.png

Screenshot from 2018-02-13 10-12-47.png

修改配置文件

[root@server1 haproxy]# vim haproxy.cfg
      bind             192.168.122.100:80 name clear
[root@server4 haproxy]# vim haproxy.cfg
      bind             192.168.122.100:80 name clear


server1端执行

[root@server1 ~]# crm node standby

Screenshot from 2018-02-13 10-17-05.png


[root@server1 ~]# crm node online

Screenshot from 2018-02-13 10-18-10.png


spacer.gif