GreatSQL社区

搜索

reddey

关于部署patroni高可用性架构的学习总结

reddey 已有 35 次阅读2025-5-28 14:00 |系统分类:运维实战


    从5月1日开始,一直在学习赵老师的《POSTGRES实战派》一书,里面有大量的实战部署案例,但里面却没有讲到patroni高可用性架构的介绍和部署。patroni高可用性架构在PCM考试和PGCM考试中,都是一个考试项目,说明这个高可用架构比较重要。上周日利用一个上午部署,结果是失败,高可用集群没有启动起来,只有一个leader节点启动了起来,另外两个节点启动报错。这周一利用晚上时间再重新部署,还是失败,明明是按网上文章的部署的,有些命令和脚本内容也是直接复制过来。连续两次部署失败,让我有些信心丧失,造成了不小的心理打击。昨天晚上在自己的虚拟机环境中重新部署,这次选择墨天轮孙莹老师分享的文章进行部署,结果成功部署了,网址如是https://www.modb.pro/db/1700755540280430592。孙莹老师是墨天轮的知名博主,所写的不少文章被墨天轮收藏。

   patroni高可用性架构,在我的理解中实际部署主要包括三个部分。一个是ETCD集群的部署,一个是关于看门狗的部署,最后的重头戏才是patroni的部署。关于ETCD集群,至少要有三个以上的奇数节点,配置文件的内容相对比较简单。但ETCD集群部署后,大家一定要注意查看一下集群的工作状态,如果有不正常的,及时加以处理。ETCD集群不正常,大家最好检查一下配置文件。

    关于看门狗的部署,每个节点的都要部署,部署非常简单,只有区区几条命令而已。yum install -y watchdog

sed -ri 's/#watchdog-device/watchdog-device/' /etc/watchdog.conf

mknod /dev/watchdog c 10 130

modprobe softdog

chown postgres:postgres /dev/watchdog

大家要关注的是上面的第四条命令,大佬的技术文章书写有误,博客中命令是chown postgres  /dev/watchdog。不要小看这一条命令,我在复制粘贴时没有注意,系统也没报错,但这个报错可能导致patroni集群启动报错。“尽信书,不如无书”,大家部署patroni高可用架构时,要仔细查看有无明显的语法错误或者与作者描述相悖的地方。遇到这种情况,可以联系博主咨询一下。

     最后的一步关于patroni的配置安装,而重点是patroni.yml 配置文件。  

patroni.yml 内容如下:

scope: pg_cluster

namespace: /service/

name: pg1

restapi:

   listen: 0.0.0.0:8008

   connect_address: 192.168.17.20:8008

etcd:

 hosts: 192.168.17.20:2379,192.168.17.21:2379,192.168.17.22:2379

bootstrap:

 dcs:

   ttl: 30

   loop_wait: 10

   retry_timeout: 10

   maximum_lag_on_failover: 1048576

   postgresql:

     use_pg_rewind: true

     use_slots: true

     parameters:

 initdb:

 - encoding: UTF8

 - data-checksums

 pg_hba:

 - host replication replicator 127.0.0.1/32 md5

 - host replication replicator 192.168.17.20/32 md5

 - host replication replicator 192.168.17.21/32 md5

 - host replication replicator 192.168.17.22/32 md5

 - host all all 0.0.0.0/0 md5

 users:

   admin:

     password: admin

     options:

       - createrole

       - createdb

postgresql:

 listen: 192.168.17.20:5432

 connect_address: 192.168.17.20:5432

 data_dir: /opt/pgdata

 bin_dir: /opt/pgsql/bin

 pgpass: /tmp/pgpass

 authentication:

   replication:

     username: replicator

     password: replicator

   superuser:

     username: postgres

     password: postgres

watchdog:

 mode: required

 device: /dev/watchdog

 safety_margin: 5

tags:

   nofailover: false

   noloadbalance: false

   clonefrom: false

   nosync: false

配置文件中划线的部分,是大家特别要注意的。在启动patroni前,建议一定要再三检查一下YMAL配置内容的正确性。我就是因为pg_hba:选项部分,没有把所有节点的IP地址没写好,导致其它节点patroni启动报错。

  总结:在配置patroni高可用架构时,特别是要注意YMAL配置内容的正确性,一定要仔细检查。patroni启动报错,大都与这个配置文件的正确性有关。我使用的操作系统是ORALCE LINUX 8.9,使用YUM安装NTP组件,没有找到组件,也就没有安装。实际上在生产环境中的高可用集群,时间的同步一致性是非常重要的,建议大家还是要安装的。

   在学习开源数据库和开源软件产品时,由于其生态技术社区在国内不是太完善,没有技术兜底。遇到技术问题时,会感觉到很无助,这个时候要咬牙坚持住。你可以向技术大佬请教,但很多问题还是要靠你自己解决。除了死嗑技术问题外,你没有别的选择。很多大佬的建议是多学习社区的英文文档,这确实是一个不错的选择。


评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-5-30 13:56 , Processed in 0.015002 second(s), 9 queries , Redis On.
返回顶部