パトローニ構成

Patroni構成には3種類あります。

  • グローバル dynamic configuration 。

    これらのオプションはDCS(分散構成ストア)に保存され、すべてのクラスターノードに適用されます。動的構成は、 patronictl edit-config toolまたはPatroni patronictl edit-config を使用して、いつでも設定できます。変更されたオプションがスタートアップ構成の一部でない場合、それらは非同期に(次のウェイクアップサイクル時に)すべてのノードに適用され、続いてリロードされます。ノードが構成を適用するために再起動が必要な場合(コンテキストpostmasterを使用する patronictl edit-config _の場合、値が変更された場合)、これを示す特別なフラグ pending_restart members.dataJSON。さらに、ノードのステータスは /"restart_pending/": true を表示することにより、これを示します。

  • ローカル configuration file (patroni.yml)。

    これらのオプションは構成ファイルで定義され、動的構成よりも優先されます。 patroni.yml は、SIGHUPをPatroniプロセスに送信するか、 POST /reload REST-API要求を実行するか、 patronictl reload を実行することにより、実行時に(Patroniを再起動せずに)変更してリロードできます。ローカル構成は、単一のYAMLファイルまたはディレクトリのいずれかです。ディレクトリの場合、そのディレクトリ内のすべてのYAMLファイルがソート順に1つずつ読み込まれます。キーが複数のファイルで定義されている場合、最後のファイルでの出現が優先されます。

  • Environment configuration 。

    環境変数を使用して、/"Local/"構成パラメーターの一部を設定/オーバーライドできます。環境構成は、動的環境で実行していて、一部のパラメーターが事前にわからない場合に非常に役立ちます(たとえば、 docker 内で実行しているときに外部IPアドレスを知ることはできません)。

重要なルール

Patroniが制御するPostgreSQLパラメーター

PostgreSQLパラメーターの一部 must hold the same values on the primary and the replicas 。それらの場合、 must hold the same values on the primary and the replicas 。それらの値を変更または設定するには、DCSの共有構成を変更する必要があります。以下は、そのようなパラメーターの実際のリストとデフォルト値です。

  • max_connections :100

  • max_locks_per_transaction :64

  • max_worker_processes :8

  • max_prepared_transactions :0

  • wal_level :hot_standby

  • track_commit_timestamp :オフ

以下のパラメーターについて、PostgreSQLは、プライマリとすべてのレプリカで同じ値を必要としません。ただし、レプリカがいつでもプライマリになる可能性を考慮すると、それらを異なる方法で設定することは実際には意味がありません。したがって、 Patroni restricts setting their values to the Patroni restricts setting their values to the 。

  • max_wal_senders :5

  • max_replication_slots :5

  • wal_keep_segments :8

  • wal_keep_size :128MB

これらのパラメーターは、正常であること、または最小値を満たしていることを確認するために検証されます。

Patroniによって制御される他のPostgresパラメーターがいくつかあります。

  • listen_addresses - postgresql.listen または PATRONI_POSTGRESQL_LISTEN 環境変数から設定されます

  • port - postgresql.listen または PATRONI_POSTGRESQL_LISTEN 環境変数から設定されます

  • cluster_name - scope または PATRONI_SCOPE 環境変数から設定されます

  • hot_standby: on

  • wal_log_hints: on -Postgres9.4以降の場合。

安全な側にあるために、上記のリストのパラメーターは postgresql.conf に書き込まれませんが、引数のリストとして pg_ctl start に渡されます。

postgresql.listen 、 postgresql.listen 、 postgresql.listen のようないくつかのパラメーターもあります、つまりPatroni postgresql.listen 内または postgresql.listen 変数を介して。ほとんどの場合、ローカル構成は動的構成をオーバーライドします。

ローカルまたは動的構成オプションを適用すると、次のアクションが実行されます。

  • ノードは最初に`postgresql.base.conf`があるかどうか、または custom_conf パラメータが設定されているかどうかを確認します。

  • custom_conf パラメーターが設定されている場合、指定されたファイルを基本構成として使用し、`postgresql.base.conf`および`postgresql.conf`を無視します。

  • custom_conf パラメータが設定されておらず、`postgresql.base.conf`が存在する場合、名前変更された/"original/"構成が含まれ、基本構成として使用されます。

  • custom_conf `も`postgresql.base.conf`もない場合、元の`postgresql.conf`が取得され、postgresql.base.confに名前が変更されます。

  • 動的オプション(上記の例外を除く)は`postgresql.conf `` and an include is set in postgresql.conf to the used base configuration (either postgresql.base.conf or what is on `` custom_conf``)にダンプされます。したがって、構成ファイルを再度読み込んでインクルードが存在しないかどうかを確認することなく、新しいオプションを適用できます。

  • Patroniがクラスターを管理するために不可欠ないくつかのパラメーターは、コマンドラインを使用してオーバーライドされます。

  • 再起動が必要なオプションの一部が変更された場合(pg_settingsのコンテキストとこれらのオプションの実際の値を確認する必要があります)、特定のノードのpending_restartフラグが設定されます。このフラグは、再起動時にリセットされます。

パラメーターは次の順序で適用されます(実行時間が最も優先されます)。

  1. パラメータをファイル`postgresql.base.conf`から(または設定されている場合は custom_conf ファイルから)ロードします

  2. ファイル`postgresql.conf`からパラメータをロードします

  3. ファイル`postgresql.auto.conf`からパラメータをロードします

  4. `-o--name=value`を使用した実行時パラメータ

これにより、すべてのノードの構成(2)、 ALTER SYSTEM (3)を使用した特定のノードの構成が可能になり、Patroniの実行に不可欠なパラメーターが強制され(4)、`postgresqlを管理する構成ツール用のスペースが確保されます。Patroniを介さずにconf`直接(1)。

Patroni構成パラメーター

また、次のPatroni構成オプション can be changed only dynamically :

  • ttl :30

  • loop_wait :10

  • retry_timeouts :10

  • maximum_lag_on_failover :1048576

  • max_timelines_history :0

  • check_timeline :false

  • postgresql.use_slots :true

これらのオプションを変更すると、PatroniはDCSに保存されている構成の関連セクションを読み取り、その実行時の値を変更します。

Patroniノードは、Postgresデータディレクトリにあるファイル patroni.dynamic.json に構成が変更されるたびに、DCSオプションの状態をディスクにダンプしています。これらのオプションがDCSに完全に存在しない場合、または無効な場合、リーダーのみがオンディスクダンプからこれらのオプションを復元できます。