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

husthxd發表於2019-11-04

本節簡單介紹了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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章