1.高可用架构
Pacemaker用于资源的转移,corosync用于心跳的检测。结合起来使用,实现对PostgreSQL高可用架构的自动管理。心跳检测用来检测服务器是否还在提供服务,若出现服务器异常,就认为它挂掉了,此时pacemaker将会对资源进行转移。pcs是Corosync和Pacemaker配置工具。

2.架构介绍
2.1 pacemaker
pacemaker是Linux环境中使用最为广泛的开源集群资源管理器(Cluster Resource Manager,简称CRM), Pacemaker利用集群基础架构(Corosync或者 Heartbeat)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。是整个高可用集群的控制中心,用来管理整个集群的资源状态行为。客户端通过 pacemaker来配置、管理、监控整个集群的运行状态。
官网地址 https://clusterlabs.org/pacemaker/ github地址 https://github.com/ClusterLabs/pacemaker

2.2 Corosync
Corosync集群引擎是一种群组通信系统(Group Communication System),为应用内部额外提供支持高可用性特性。corosync属于消息网络层,对外提供服务和主机的心跳检测,在监控的主服务被发现当机之后,即时切换到从属的备份节点,保证系统的可用性。一般来说都是选择corosync来进行心跳的检测,搭配pacemaker的资源管理系统来构建高可用的系统。
2.3 pcs
pcs是Corosync和Pacemaker配置工具。它允许用户轻松查看,修改和创建基于Pacemaker的集群。pcs包含pcsd(一个pc守护程序),它可作为pc的远程服务器并提供Web UI。全部受控的 pacemaker和配置属性的变更管理都可以通过 pcs实现。
3.集群状态检查
3.1 重新启动集群
--数据库无需配置自启动,由集群软件自动拉起 [root@pg01 ~]# pcs cluster start --all [root@pg01 ~]# pcs cluster status [root@pg01 ~]# pcs status corosync

3.2 集群状态确认
--查看本机集群状态及资源状态 crm_mon -Afr -1

--查看vip挂载情况 节点1

--查看vip挂载情况 节点2

[root@pg01 ~]# pcs resource show Master/Slave Set: msPostgresql [pgsql] Masters: [ pg01 ] Slaves: [ pg02 pg03 ] Resource Group: master-group vip-master (ocf::heartbeat:IPaddr2): Started pg01 Resource Group: slave-group vip-slave (ocf::heartbeat:IPaddr2): Started pg02
3.3 主从流复制状态
[root@pg01 ~]# su - postgres Last login: Sat May 18 22:20:25 CST 2024 on pts/0 [postgres@pg01 ~]$ psql psql (11.10) Type "help" for help. postgres=# select * from pg_stat_replication;

4.数据同步验证
主节点插入数据 psql -h 192.168.3.13 -p5432 -U postgres create table test(id int); insert into test values(1); 从库查询如下:

5.故障切换
5.1 主库故障
停掉主库,节点2提升为主节点,节点3自动指向节点2 [postgres@pg01 ~]$ pg_ctl stop -D /pgdata [root@pg01 ~]# pcs status

[root@pg01 ~]# crm_mon -Arf -1

postgres=# select * from pg_stat_replication;

5.2 故障节点修复
在master宕机启动时,需要删除临时锁文件方可进行集群角色转换。 即执行rm -rf /var/lib/pgsql/tmp/PGSQL.lock。 拉起数据库不需要执行pg_ctl start, 只需重启服务 systemctl restart corosync pacemaker pcsd 软件会自动把数据库拉起。 节点1启动后,作为节点2的从库:

6.集群常用操作
pcs status //查看集群状态 pcs resource show //查看资源 pcs resource cleanup 表示虚拟资源名称,当集群有资源处于unmanaged的状态时, 可以用这个命令清理掉失败的信息,然后重置资源状态 pcs resource list //查看资源列表 pcs resource restart //重启资源 pcs resource enable //启动资源 pcs resource disable //关闭资源 pcs resource delete //删除资源 crm_mon -Arf -1 //查看同步状态和资源
7.总结
Pacemaker+Corosync高可用架构旨在保证系统能够在发生硬件或软件故障时仍然能够持续运行,提供稳定可靠的PostgreSQL服务.
