文章转载自公众号:AustinDatabases
本次阅读时长:

.

.


那这个软件的作者是谁Alexander和Oleksii(其实有时候真该反思反思,Mysql的MHA是日本人发明,PostgreSQL Patroni是德国人发明,当然还有挪威人、俄罗斯人发明的一些类似的东西),并且在世界范围使用。

为什么要使用patroni,对比目前常用的高可用的方式存在问题
提升一个复制节点时无响应的情况下,存在脑裂的可能
单一的monitor节点对于集群的监控缺陷以及失败节点必须被清理的问题
多点监控中的分布一致性的问题
所以Patroni的诞生是因为这些问题在其他的方式中并没有被解决,Patroni本身并没有在内部来解决上述问题,而是巧妙的使用了,大部分常用的DCS,Distributed Configuration System(DCS),例如etcd,zookeeper,consul 等来作为解决上面3个问题的方法。
任何解决方案都有他的Pros和Cons,Patroni的Cons又是什么,例如当某个节点并未和主节点连接的情况下,可能Patroni可能无法判断,还是显示从属节点。另外还需要对于zookeeper或者etcd等有相关的知识,设置上可能不如repmgr要简单方便。
当然也有一些不客气的话,对于PostgreSQL的其他的HA的方案,例如drbd,corosync+pacemaker,repmgr等方案用上了out of date的词汇。
实际上,repmgr的变化方式已经在某云使用了,不知道他们听到如此的词汇作何感想。

实际上到底Patroni有没有一个简单的introduce。
Patroni是一个有Zalando研发的,完整由python代码的开源产品,通过DCS来对PostgreSQL各个节点的状态进行判断,在添加节点方面你需要通过你熟悉的手段来自行添加节点(repmgr在安装中会将节点加入),同时还能定义类似MHA中某些节点一直是standby的角色,不参与mater的竞争,其中还能定义一些触发行为,例如在start,stops,failover等状态下触发后,到底要继续做些什么。并且也可以类似MHA的方式手动切换主节点。
那么还有一个问题值得来说,到底patroni应该最低是几个几点,这里建议是3个节点,这和Mysql的MHA中建议的三个节点是一个意思,大多数原则,防止由于网络等问题,造成的一些双数节点出现的不可预测的问题。
另外repmgr本身是可以通过witeness的技术防止类似问题,但起步也是最少三个节点,但这又给了文字最初英文中,out of date中提出的单点monitor 于口实。所以patroni的确在某些方面要比某些高可用的方案严谨。
所以选择patroni作为PostgreSQL的高可用的方式是有可圈可点。另外通过docker+K8S部署patroni的方案也是有的,参见下图,也是目前另一种更方便的并且适合大批量部署的方式。

I Love PG
关于我们
中国开源软件推进联盟PostgreSQL分会(简称:中国PG分会)于2017年成立,由国内多家PostgreSQL生态企业所共同发起,业务上接受工信部中国电子信息产业发展研究院指导。中国PG分会是一个非盈利行业协会组织。我们致力于在中国构建PostgreSQL产业生态,推动PostgreSQL产学研用发展。
活动成就
PostgresConf.CN & PGConf.Asia2020大会预告
经典文章
PostgreSQL与Oracle:成本、易用性和功能上的差异
精彩专辑






