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

レッスン 19: POSTGRESQL フェイルオーバー テストとスイッチオーバー

プライマリダウン時の自動フェイルオーバー、計画的なスイッチオーバー、フェンシングメカニズム、レプリケーションラグの監視、およびアプリケーション接続処理をテストします。

🔒 DevSecOps — レッスン 19 レッスン 19: POSTGRESQL フェイルオーバー テストと スイッチオーバー

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

パート 4: Patroni と PostgreSQL HA を使用するCloudNativePG

xdev.asia

🎯 レッスンの目的__HTMLTAG_68___
  • ✅ プライマリ ポッドが強制終了されたときの自動フェイルオーバーをテストする__HTMLTAG_71___
  • ✅ 計画された切り替え (メンテナンス期間)
  • ✅ レプリケーションの遅延を監視
  • ✅ フェイルオーバー中のアプリケーション接続処理
  • ✅ フェンシングとスプリット ブレインの防止

パート 1: 自動フェイルオーバー

1.1。テスト: プライマリ ポッドを強制終了

___コードブロック_0___

1.2.フェイルオーバーのタイムライン

___コードブロック_1___

パート 2: 計画された切り替え

2.1.計画的なスイッチオーバー (データ損失ゼロ)

___コードブロック_2___

パート 3: レプリケーション ラグの監視

コードブロック_3

3.1.レプリケーション ラグに関するアラート

___コードブロック_4___

パート 4: アプリケーション接続の処理

4.1.アプリケーションでのフェイルオーバーの処理

___コードブロック_5___

コードブロック_6


パート 5: フェンスとスプリットブレインの防止

コードブロック_7


💡 重要なポイント

  1. 自動フェイルオーバー: ~10 ~ 15 秒、オペレーターが検出 + 促進
  2. 計画的スイッチオーバー: データ損失ゼロ、__HTMLTAG_117___kubectl cnpg promote
  3. レプリケーションラグモニタリング: pg_stat_replication、Prometheus メトリクス
  4. アプリケーション: サービス名、再試行ロジック、target_session_attrs
  5. を使用します。
  6. フェンシング: K8s リースはスプリット ブレインを防止
  7. PgBouncer アプリケーションからフェイルオーバーを非表示にします (透過的再接続)

🎯 演習

演習 1: フェイルオーバー ラボ

  • プライマリ ポッドを強制終了し、フェイルオーバー時間を測定
  • フェイルオーバー後のデータ整合性の検証
  • 特定のスタンバイへの計画的な切り替え

演習 2: アプリ接続テスト

  • PgBouncer 経由で PG に接続するシンプルなアプリをデプロイ
  • アプリの書き込み中にフェイルオーバーをトリガー
  • アプリが自動的に回復することを確認

📚 次の投稿

__HTMLTAG_164___レッスン 20: PostgreSQL のモニタリング、チューニング、および 2 日目の操作 では、運用環境向けに詳細なモニタリングとチューニングをセットアップします。