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

レッスン 16: PATRONI と CLOUDNATIVEPG を使用した POSTGRESQL HA アーキテクチャ

K8s 上の PostgreSQL HA、ストリーミング レプリケーション アーキテクチャ、同期と非同期、フェイルオーバー メカニズム、および接続プーリングについて、Patroni と CloudNativePG を比較します。

🔒 DevSecOps — レッスン 16 レッスン 16: を使用した POSTGRESQL HA アーキテクチャ パトローニとクラウドナティブPG

Kubernetes HA を使用してマイクロサービスをオンプレミスにデプロイ

パート 4: Patroni と PostgreSQL HA を使用する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 パトローニ (ザランド) PGO (CrunchyData)
アーキテクチャ K8s ネイティブ オペレーター__HTMLTAG_168___ サイドカー + DCS K8s オペレーター
フェイルオーバー K8s コントローラー DCS 経由の Raft のような K8s コントローラー
DCS 依存性_ ❌ 不要 (K8 を使用) ✅ etcd/Consul/K8s が必要 ❌ 不要
バックアップ バーマン (S3/ローカル) WAL-G、pgBackRest pgBackRest
接続プーリング__HTMLTAG_206___ PgBouncer 内蔵 別途設定が必要 PgBouncer 内蔵
CNCF サンドボックス コミュニティ コミュニティ
ライセンス Apache 2.0 MIT Apache 2.0
複雑さ 低 平均 平均

👉 CloudNativePG を選択: K8s ネイティブ、外部 DCS 不要、CNCF プロジェクト、統合バックアップ、K8s の Patroni より簡単。


パート 3: CLOUDNATIVEPG アーキテクチャ

コードブロック_1

3.1.フェイルオーバー フロー

___コードブロック_2___

パート 4: 接続プーリング — PGBOUNCER

コードブロック_3


パート 5: ストレージに関する考慮事項

コードブロック_4


💡 重要なポイント

  1. CloudNativePG: K8s ネイティブ、etcd/Consul 不要、自動フェイルオーバー
  2. _ストリーミング レプリケーション: WAL ストリーミング経由のプライマリ → スタンバイ
  3. データ損失ゼロの場合は同期、スループットの場合は__HTMLTAG_277___非同期
  4. PgBouncer: 接続プーリングがデータベース プロセスの 20 倍に削減
  5. Ceph RBD (ReadWriteOnce) はデータベース PV
  6. に適しています
  7. 3 サービス: rw (プライマリ)、ro (スタンバイ)、r (任意のインスタンス)

🎯 演習

演習 1: 調査

  • CloudNativePG ドキュメントを読む
  • 3 つの演算子を比較: CNPG vs Patroni vs PGO
  • _ユースケースに応じて同期か非同期かを決定__HTMLTAG_304___

📚 次の投稿

__HTMLTAG_310___レッスン 17: CloudNativePG Operator と PostgreSQL クラスターのデプロイ では、CloudNativePG をインストールし、PostgreSQL クラスター 3 インスタンスを作成します。