Failure Modes

注釈

CloudNativePGの以前のバージョンでは、このページには特定の障害シナリオが含まれていました。これらは主に標準のKubernetesの動作に従っているため、コンテンツを合理化して、基になるKubernetesスタックに属し、CloudNativePGに固有ではない情報の重複を回避しました。

CloudNativePGは、自己修復と高可用性のための標準のKubernetes原則に準拠しています。ストレージクラス、PVC、ノード、ポッドなどのコアKubernetes概念に精通していることを前提としています。 CloudNativePG固有の詳細については、スタートアップ、ライブネス、および準備状況プローブをカバーする Postgres Instance Manager および以下の 自己修復 セクションを参照してください。

注釈

本番でCloudNativePGを実行している場合、 professional support をシークすることを強くお勧めします。

自己修復

一次障害

プライマリポッドに障害が発生した場合

  • オペレーターは、レプリケーションラグが最も低い最新のスタンバイをプロモートします。

  • -rw サービスが更新されて、新しいプライマリをポイントします。

  • 障害が発生したPodは、-r および-rw サービスから削除されます。

  • スタンバイポッドは、新しいプライマリから複製を開始します。

  • 前者のプライマリはpg_rewind を使用して、PVCが利用可能な場合を再同期します。それ以外の場合、新しいプライマリのバックアップから新しいスタンバイが作成されます。

スタンバイ障害

スタンバイポッドに障害が発生した場合

  • -r および-ro サービスから削除されます。

  • ポッドは、PVCがある場合はそれを使用して再起動されます。それ以外の場合、新しいポッドは、現在のプライマリのバックアップから作成されます。

  • 準備が整うと、Podは-r および-ro サービスに再追加されます。

手動介入

自動復旧の対象とならない障害シナリオの場合、手動介入が必要になる場合があります。

注釈

professional support なしで手動操作を実行しないでください。

リコンシリエーションの無効化

PostgreSQLクラスターのリコンシリエーションループを一時的に無効にするには、 cnpg.io/reconciliationLoop アノテーションを使用します。

metadata:
  name: cluster-example-no-reconcile
  annotations:
    cnpg.io/reconciliationLoop: "disabled"
spec:
  # ...

この注釈は 細心の注意を払って 、緊急操作中にのみ使用してください。

警告

このアノテーションは、問題が解決されたらすぐに削除する必要があります。そのままにすると、オペレーターはフェイルオーバーを含む自己修復アクションを実行できません。