Chuyển đến nội dung chính

第 16 課:使用 PARONI 和 CLOUDNATIVEPG 的 POSTGRESQL HA 架構

比較 Patroni 與 CloudNativePG 在 K8s 上的 PostgreSQL HA、流複製架構、同步與非同步、故障轉移機制和連接池。

🔒 DevSecOps — 第 16 課 第 16 課:使用 的 POSTGRESQL HA 架構 PATRONI 和 CLOUDNATIVEPG

使用 Kubernetes HA 在本地部署微服務

第 4 部分:PostgreSQL HA 與 Patroni & CloudNativePG

xdev.asia

🎯 課程目標__HTMLTAG_68___

完成本課程後,您將:

  • ✅ 了解 PostgreSQL 流複製
  • ✅ 比較 Patroni、CloudNativePG 和 PGO (CrunchyData)
  • ✅ 了解同步與非同步複製__HTMLTAG_77___
  • ✅ HA 架構:主備、故障轉移、隔離
  • ✅ 使用 PgBouncer 進行連線池

第 1 部分:POSTGRESQL 複製

1.1。流式複製

___程式碼區塊_0___

✅ 主要:接收寫入,將 WAL 串流傳輸到備用資料庫 ✅ 備用:重播 WAL,服務讀取查詢 ✅ 故障轉移:將備用提升為主

1.2。同步與異步

模式 同步 異步
資料安全 零資料遺失 (RPO=0) 潛在的資料遺失
寫入延遲 更高(等待待機ACK) 降低(不要等待)
吞吐量 下 更高
網路依賴性 強(延遲影響寫入) 弱
最適合 財務、關鍵資料 大多數應用

第 2 部分:比較 POSTGRESQL 運算子

標準 CloudNativePG 帕特羅尼 (Zalando) PGO (CrunchyData)
架構 K8s 原生運算子__HTMLTAG_168___ 邊車 + DCS K8s 運營商
故障轉移 K8s 控制器 透過 DCS 類似 Raft K8s 控制器
DCS 依賴性 ❌不需要(使用K8s) ✅ 需要 etcd/Consul/K8s ❌不需要
備份 酒保(S3/本地) WAL-G,pgBackRest pgBackRest
連線池__HTMLTAG_206___ PgBouncer 內建 需要單獨設定 PgBouncer 內建
CNCF 沙盒 社區 社區
許可證 Apache 2.0 麻省理工學院 Apache 2.0
複雜性 低 平均 平均

👉 選擇CloudNativePG:K8s原生,無需外部DCS、CNCF項目,集成備份,比K8s上的Patroni更簡單.


第 3 部分:CLOUDNATIVEPG 架構

程式碼區塊_1

3.1。故障轉移流程

___程式碼區塊_2___

第 4 部分:連接池 — PGBOUNCER

程式碼區塊_3


第 5 部分:儲存注意事項

程式碼區塊_4


💡 重點

    ___HTMLTAG_266__HTMLTAG_267___CloudNativePG:K8s 原生,無須 etcd/Consul,自動故障轉移 ___HTMLTAG_270__HTMLTAG_271___串流複製:透過 WAL 串流主 → 備用 ___HTMLTAG_274__HTMLTAG_275___同步實現零資料遺失,異步實作吞吐量 ___HTMLTAG_280__HTMLTAG_281___PgBouncer:連接池減少了 20 個資料庫進程 ___HTMLTAG_284__HTMLTAG_285___Ceph RBD (ReadWriteOnce) 適用於資料庫 PV ___HTMLTAG_288__HTMLTAG_289___3 項服務:rw(主)、ro(備用)、r(任何實例)

🎯 練習

練習 1:研究

  • 閱讀 CloudNativePG 文件
  • 比較 3 個運營商:CNPG、Patroni 和 PGO
  • 根據您的用例決定同步或非同步__HTMLTAG_304___

📚 下一篇文章

在第 17 課:部署 CloudNativePG Operator 和 PostgreSQL 叢集中,我們將安裝 CloudNativePG 並建立 PostgreSQL 叢集 3 個實例。