ITPub博客

首页 > 数据库 > PostgreSQL > PostgreSQL DBA(120) - pgAdmin(HA with Patroni)

PostgreSQL DBA(120) - pgAdmin(HA with Patroni)

原创 PostgreSQL 作者:husthxd 时间:2019-11-04 15:59:27 0 删除 编辑

本节简单介绍了PostgreSQL HA with Patroni的架构,并对DCS等做了简单的描述。

PostgreSQL HA with Patroni的架构比较好理解,大体由以下三部分组成:
1.PostgreSQL实例,包括主节点、从节点等;
2.Patroni,与PG部署在一起,作为PG与DCS的沟通媒介;
3.DCS分布式配置存储,用于存储公共的配置信息。

Bot Design Pattern
由于PostgreSQL无法直接与DCS进行通讯,因此Patroni与PostgreSQL实例使用了Bot Design Pattern,Patroni的作用在于:
1.管理PostgreSQL实例;
2.与DCS通讯GET/SET DCS的相关信息;
3.确定PostgreSQL实例的升级和降级。
Bot Design Pattern的架构图如下所示:

Patroni使用Python实现了Bot Design Pattern。

DCS
在目前的实现中,DCS一般使用etcd等分布式K/V存储器,但从更抽象的层次来看,这一部分可以理解为中心数据存储。因此,从技术角度来看可以完全使用文件亦或是普通的数据库,而之所以要用etcd这类分布式K/V存储是因为要保证DCS的HA,否则DCS会成为整个PostgreSQL HA架构中的“单机”故障点。理论上来说,所有具备HA特性的存储均可作为DCS,而不仅限于etcd、zk、consul等这类用于分布式共享配置和服务发现的K/V存储管理器。

选主
DCS的选主由DCS自行处理,比如etcd使用raft算法选主,zk使用ZAB算法选主;PostgreSQL的选主需要依赖Bot(也就是Patroni),WAL位置最新的优先,在WAL位置一样的情况下,竞争性的获取DCS的分布式“锁”,先到先成为主节点,如下图所示:

HA with Patroni的架构简单易懂,有兴趣可通过官方提供的Docker镜像来体验。

参考资料
Managing High Availability in PostgreSQL – Part III: Patroni

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/6906/viewspace-2662551/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
ITPUB数据库版块资深版主,对Oracle、PostgreSQL有深入研究。

注册时间:2007-12-28

  • 博文量
    1434
  • 访问量
    3871793