クラスターの一時停止/再開モード¶
目標¶
特定の状況下では、PatroniはDCSでクラスターの状態を維持しながら、クラスターの管理を一時的に辞任する必要があります。考えられるユースケースは、メジャーバージョンのアップグレードや破損の回復など、クラスターでの一般的ではないアクティビティです。これらのアクティビティ中に、パトローニには不明な理由でノードが起動および停止されることがよくあります。一部のノードは一時的に昇格することさえあり、1つのプライマリのみを実行するという前提に違反します。したがって、Patroniは実行中のクラスターから「デタッチ」でき、Pacemakerのメンテナンスモードに相当するものを実装できる必要があります。
実装¶
Patroniが一時停止モードで実行されている場合、次の場合を除き、PostgreSQLの状態は変更されません。
各ノードについて、DCSのメンバーキーは、クラスターに関する現在の情報で更新されます。これにより、メンバーが実行されている場合、Patroniはメンバーノードで読み取り専用クエリを実行します。
リーダーロックを持つPostgresプライマリの場合、Patroniはロックを更新します。リーダーロックを持つノードがプライマリであることを停止した場合(つまり、手動で降格された場合)、Patroniはノードを昇格する代わりにロックを解放します。
手動によるスケジュールされていない再起動、再初期化、および手動フェールオーバーが許可されます。手動フェールオーバーは、フェールオーバー先のノードが指定されている場合にのみ許可されます。一時停止モードでは、手動フェールオーバーに実行中のプライマリノードは必要ありません。
「パラレル」プライマリがPatroniによって検出された場合、警告を発しますが、リーダーロックなしでプライマリを降格しません。
クラスター内にリーダーロックがない場合、実行中のプライマリがロックを取得します。複数のプライマリノードがある場合、最初にロックを取得したプライマリが勝ちます。プライマリがまったくない場合、Patroniはレプリカを昇格しようとしません。このルールには例外があります。古いプライマリが手動昇格のために自分自身を降格したためにリーダーロックがない場合、昇格要求で言及された候補ノードのみがリーダーロックを取得できます。新しいリーダーロックが付与されると(つまり、レプリカを手動でプロモートした後)、Patroniは、以前のリーダーからストリーミングしていたレプリカが新しいリーダーに切り替わることを確認します。
Postgresが停止すると、Patroniは起動しようとしません。Patroniが停止すると、管理しているPostgresインスタンスを停止しようとしません。
Patroniは、他のクラスターメンバーを表していないか、永続スロットの構成にリストされていないレプリケーションスロットを削除しようとしません。
ユーザーガイド¶
patronictl は、 pause および resume コマンドをサポートします。
{/"pause/": true/false/null} を使用して {namespace}/{cluster}/config キーに PATCH リクエストを発行することもできます