クラスターの一時停止/再開モード

ゴール

特定の状況では、PatroniはDCSにクラスター状態を保持したまま、クラスターの管理から一時的に辞任する必要があります。考えられるユースケースは、メジャーバージョンのアップグレードや破損リカバリなど、クラスターでの一般的ではないアクティビティです。これらのアクティビティ中に、ノードはパトローニにとって不明な理由で起動および停止されることが多く、一部のノードは一時的に昇格することもあり、プライマリを1つのみ実行するという仮定に違反します。したがって、Patroniは、Pacemakerのメンテナンスモードと同等の機能を実装し、実行中のクラスターから/"detach/"できる必要があります。

実装

Patroniが一時停止モードで実行されている場合、次の場合を除き、PostgreSQLの状態は変更されません。

  • ノードごとに、DCSのメンバーキーがクラスターに関する現在の情報で更新されます。これにより、Patroniは、メンバーが実行中の場合、メンバーノードで読み取り専用クエリを実行します。

  • リーダーロックを使用したPostgresプライマリの場合、Patroniはロックを更新します。リーダーロックを持つノードがプライマリでなくなるつまり手動で降格されると、Patroniはノードをプロモーションして戻す代わりにロックを解放します。

  • 手動スケジュール外の再起動、手動スケジュール外のフェイルオーバー/スイッチオーバー、および再初期化が許可されます。スケジュールされたアクションは許可されません。手動スイッチオーバーは、スイッチオーバー先のノードが指定されている場合にのみ許可されます。

  • 'Parallel'プライマリがPatroniによって検出された場合、警告を発しますが、リーダーロックなしでプライマリを降格しません。

  • クラスター内にリーダーロックがない場合、実行中のプライマリがロックを取得します。複数のプライマリノードがある場合、最初にロックを取得したプライマリが勝ちます。プライマリが完全にない場合、Patroniはレプリカをプロモーションしようとしません。このルールには例外があります。古いプライマリが手動昇格のために自分自身を降格したため、リーダーロックがない場合、昇格要求に記載された候補ノードのみがリーダーロックを取得できます。新しいリーダーロックが付与されると、レプリカを手動で昇格させた後、パトローニは、以前のリーダーからストリーミングしていたレプリカが新しいリーダーに切り替わることを確認します。

  • Postgresが停止している場合、Patroniはそれを起動しようとしません。 Patroniは、停止しても、管理しているPostgresインスタンスを停止しようとしません。

  • Patroniは、他のクラスターメンバーを表さない、または永続スロットの構成にリストされていないレプリケーションスロットを削除しようとしません。

ユーザーガイド

patronictl は、 patronictl および patronictl コマンドをサポートしています。

{/"pause/": true/false/null} を使用して {namespace}/{cluster}/config キーに PATCH 要求を発行することもできます