PostgreSQL 11版本基于Pacemaker+Corosync+pcs的高可用搭建

0    237    3

👉 本文共约3934个字,系统预计阅读时间或需15分钟。

简介

PG常见的高可用软件包括pgpool-II、keepalived、patroni+etcd、repmgr等,架构包括如下几种:

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

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

pacemaker 官网地址:https://clusterlabs.org/pacemaker/

pacemaker github:https://github.com/ClusterLabs/pacemaker

Corosync集群引擎是一种群组通信系统(Group Communication System),为应用内部额外提供支持高可用性特性。corosync和heartbeat都属于消息网络层,对外提供服务和主机的心跳检测,在监控的主服务被发现当机之后,即时切换到从属的备份节点,保证系统的可用性。一般来说都是选择corosync来进行心跳的检测,搭配pacemaker的资源管理系统来构建高可用的系统。

pcs是Corosync和Pacemaker配置工具。它允许用户轻松查看,修改和创建基于Pacemaker的集群。pcs包含pcsd(一个pc守护程序),它可作为pc的远程服务器并提供Web UI。全部受控的 pacemaker和配置属性的变更管理都可以通过 pcs实现。

其实,Pacemaker+Corosync+pcs也是用于“在Linux中安装MSSQL 2017 Always On Availability Group”的管理工具,具体可以参考:https://www.xmmup.com/zailinuxzhonganzhuangmssql-2017-always-on-availability-group.html

注意:请先看本文的总结部分!!!

环境介绍

IP端口映射主机端口角色OS软件
172.72.6.81543264381主库CentOS 7.6PG 11.12 + Pacemaker 1.1.23 + Corosync + pcs
172.72.6.82543264382备库CentOS 7.6PG 11.12 + Pacemaker 1.1.23 + Corosync + pcs
172.72.6.83543264383备库CentOS 7.6PG 11.12 + Pacemaker 1.1.23 + Corosync + pcs

使用docker快速申请环境,如下:

安装和配置集群

安装依赖包和集群软件并启动pcs

3个节点都操作:

配置密码

3个节点都操作:

集群认证

任意一个节点:

同步配置

任意一个节点:

启动集群

过程:

安装配置PG环境

使用yum安装的pacemaker为1.1.23版本,对于PG来说,最高只支持到PG11。

查看Pacemaker支持的PostgreSQL版本:

主库修改参数,开启归档

我的镜像环境已经安装好了PG,所以,不再安装,只需要做基础的配置动作即可,例如防火墙,远程登录等,启动主库:

主库创建复制用户

创建备机节点

在节点2和节点3上操作:

停止主库

配置DB集群

配置DB集群

使用root用户执行:

执行该shell脚本,执行完会产生pgsql_cfg的配置文件:

过程:

集群状态检查

重新启动集群

数据库无需配置自启动,由集群软件自动拉起

过程:

注意:当vip-master和vip-slave都是Started状态时,集群节点配置正确。否则,请检查你的配置是否有误.

查看本机集群状态及资源状态

查看主节点流复制状态

查看vip挂载情况

数据同步验证

主节点插入数据

从库查询:

故障模拟

停掉主库,节点2提升为主节点,节点3自动指向节点2:

修复节点1

在master宕机启动时,需要删除临时锁文件方可进行集群角色转换。即执行rm -rf /var/lib/pgsql/tmp/PGSQL.lock

拉起数据库不需要执行pg_ctl start,只需重启服务(systemctl restart corosync pacemaker pcsd),软件会自动把数据库拉起。

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

节点1启动后,作为节点2的从库:

集群常用操作

修改集群配置

cibadmin是用于操作 Heartbeat CIB 的低级管理命令。它可以用来转储、更新或修改所有或部分 CIB,删除整个 CIB 或执行各种 CIB 管理操作。

集群配置信息是Pacemaker集群中CIB信息的关键组成部分,Pacemaker的集群配置信息决定了集群最终应该如何工作以及集群最终的运行状态,因为只有一个正确的集群配置才能驱动集群资源运行在正常的状态。通常情况下,集群的配置信息由集群配置选项(crm_config)、集群节点(nodes)、集群资源(resources)和资源约束(constraints)四个配置段组成,通过cibadmin --query可查。

参数介绍

总结

1、使用yum安装的pacemaker为1.1.23版本,对于PG来说,最高只支持到PG11,由于PG12的主从发生了变化,在由pacemaker启动PG时,会自动生成recovery.conf文件,所以会报错"FATAL: using recovery command file "recovery.conf" is not supported"。

我编译安装最新版本pacemaker-Pacemaker-2.1.3-rc2.tar.gz后,仍然会生成recovery.conf该文件(也有可能是个人能力有限,欢迎大家批评指正)。所以,建议,对于PG 12及其以上的版本的PG库使用repmgr或patroni来进行高可用自动故障切换管理。

在CentOS 7.6上编译安装Pacemaker-2.1.3https://www.xmmup.com/zaicentos-7-6shangbianyianzhuangpacemaker-2-1-3.html

2、$PGDATA目录必须属于postgres用户。

3、postgresql.conf参数文件中,不能配置unix_socket_directories参数,否则启动会报错,权限不足。

4、共享内存段需要调整:mount -o remount,size=4G /dev/shm

5、日志文件:

    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    2 × 1 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部