|
从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组件,没有找到组件,也就没有安装。实际上在生产环境中的高可用集群,时间的同步一致性是非常重要的,建议大家还是要安装的。
在学习开源数据库和开源软件产品时,由于其生态技术社区在国内不是太完善,没有技术兜底。遇到技术问题时,会感觉到很无助,这个时候要咬牙坚持住。你可以向技术大佬请教,但很多问题还是要靠你自己解决。除了死嗑技术问题外,你没有别的选择。很多大佬的建议是多学习社区的英文文档,这确实是一个不错的选择。
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com