1.认识pacemaker
Pacemaker是 Linux环境中使用最为广泛的开源集群资源管理器, Pacemaker利用集群基础架构(Corosync或者 Heartbeat)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。
Pacemaker是整个高可用集群的控制中心,用来管理整个集群的资源状态行为,客户端通过 pacemaker来配置、管理、监控整个集群的运行状态
2.Pacemaker的主要功能:
- 监测并恢复节点和服务级别的故障。
- 存储无关,并不需要共享存储。
- 资源无关,任何能用脚本控制的资源都可以作为集群服务。
- 支持节点 STONITH功能以保证集群数据的完整性和防止集群脑裂。
- 支持大型或者小型集群。
- 支持 Quorum机制和资源驱动类型的集群。
- 支持几乎是任何类型的冗余配置。
- 自动同步各个节点的配置文件。
- 可以设定集群范围内的 Ordering、 Colocation and Anti-colocation等约束。
- 高级服务类型支持,例如:
- Clone功能,即那些要在多个节点运行的服务可以通过 Clone功能实现, Clone功能将会在多个节点上启动相同的服务;
- Multi-state功能,即那些需要运行在多状态下的服务可以通过 Multi–state实现,在高可用集群的服务中,有很多服务会运行在不同的高可用模式下,如:Active/Active模式或者 Active/passive模式等,并且这些服务可能会在 Active 与standby(Passive)之间切换。
- 具有统一的、脚本化的集群管理工具。
二、Pacemaker实现高可用
环境部署:
server1 server2 作为haproxy 服务器,用pacemaker实现负载均衡服务器高可用
server3 server4 作为httpd 服务器
server1
1.yum源搭建
yum install -y pacemaker corosync
yum install crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm -y
2.
cd /etc/corosync/
ls
cp corosync.conf.example corosync.conf
vim corosync.conf
3.修改配置文件(让corosync在pacemaker启动时也启动)
10 bindnetaddr: 172.25.99.0 #同网段
11 mcastaddr: 226.94.1.1 #多播地址(不需要修改)
12 mcastport: 5405 #多播端口
35 service {
36 name:pacemaker
37 ver:0
38 }
scp /etc/corosync/corosync.conf server2:/etc/corosync/
server2:
yum install -y pacemaker corosync
rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm --nodeps --force
两边同时启动corosync服务
server1/2:
/etc/init.d/corosync start
在server1: 查看节点状态:
crm status
在server1检测文件:
crm_verify -VL
进行全局资源配置,将fence设备关闭(否则服务起不来)
crm configure property no-quorum-policy="ignore"
##忽略节点监测,集群至少为2个,实验中只有两个,忽略掉方便实验正常测试
crm configure property stonith-enabled=false
##因为在这里我们还没有对fence进行配置,先将stonith-enabled 设置为 false,表示资源不会迁移
添加虚拟ip:
[root@server1 corosync]# crm
crm(live)# configure
crm(live)configure# show
node server1
node server2
property $id="cib-bootstrap-options" \
dc-version="1.1.10-14.el6-368c726" \
cluster-infrastructure="classic openais (with plugin)" \
expected-quorum-votes="2" \
no-quorum-policy="ignore" \
stonith-enabled="false"
crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.60.100 cidr_netmask=24 op monitor interval=20s
##添加vip资源,params 指定参数 op monitor
crm(live)configure# commit
crm(live)configure# exit
bye
[root@server1 corosync]#
在server2上监控:
crm_mon
测试:关闭server1的corosync
server1宕机时,服务会自动跳转到server2上
实现负载均衡
在server1, server2上配置好haproxy
https://blog.youkuaiyun.com/weixin_44416500/article/details/89431451(haproxy搭建)
server1:
[root@server1 ~]# crm
crm(live)# configure
crm(live)configure# primitive haproxy lsb:haproxy op monitor interval=20s
##haproxy名字,lsb资源代理,每隔20s监控
crm(live)configure# commit
crm(live)configure# exit
bye
server2:
crm_mon ##监控如下图
server3/4配置html页面
测试: