パトローニ構成
Patroni構成には3種類があります。
- グローバル dynamic configuration 。
これらのオプションはDCS分散構成ストアに保存され、すべてのクラスターノードに適用されます。動的構成は、 patronictl edit-config ツールまたはPatroni patronictl edit-config を使用して、いつでも設定できます。変更されたオプションが起動構成の一部でない場合、それらは次のウェイクアップサイクルですべてのノードに非同期的に適用され、その後リロードされます。ノードが構成を適用するために再起動が必要な場合コンテキストポストマスターを使用した patronictl edit-config _の場合、値が変更された場合、これを示す特別なフラグ
pending_restartが members.data JSONに設定されます。さらに、ノードステータスは/"restart_pending/": trueを表示することによりこれを示します。
- ローカル configuration file patroni.yml 。
これらのオプションは構成ファイルで定義され、動的構成より優先されます。
patroni.ymlは、 SIGHUPをPatroniプロセスに送信するか、POST /reloadREST-API要求を実行するか、patroni.ymlを実行することにより、実行時に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、最小値25
max_locks_per_transaction デフォルト値64、最小値32
max_worker_processes デフォルト値8、最小値2
max_prepared_transactions デフォルト値0、最小値0
wal_level デフォルト値hot_standby、受け入れられた値 hot_standby、レプリカ、論理
track_commit_timestamp デフォルト値off
以下のパラメーターの場合、PostgreSQLは、プライマリとすべてのレプリカの間で値が等しい必要はありません。ただし、レプリカがいつでもプライマリになる可能性を考慮すると、それらを別に設定することはあまり意味がありません。したがって、 Patroni restricts setting their values to the Patroni restricts setting their values to the 。
max_wal_senders デフォルト値10、最小値3
max_replication_slots デフォルト値10、最小値4
wal_keep_segments デフォルト値8、最小値1
wal_keep_size デフォルト値128MB、最小値16MB
wal_log_hints :on
これらのパラメーターは検証されて、正常であること、または最小値を満たしていることが確認されます。
Patroniによって制御されるPostgresパラメーターは他にもいくつかあります。
listen_addresses -
postgresql.listenまたはPATRONI_POSTGRESQL_LISTEN環境変数から設定されますport -
postgresql.listenまたはPATRONI_POSTGRESQL_LISTEN環境変数から設定されますcluster_name -
scopeまたはPATRONI_SCOPE環境変数から設定されますhot_standby: on
安全のため、上記のリストのパラメーターは postgresql.conf に書き込まれ、引数のリストとして postgres に渡され、最高の優先順位を与えます wal_keep_segments および wal_keep_size を除きます。
postgresql.listen 、 postgresql.listen 、その postgresql.listen 、つまりPatroni postgresql.listen または postgresql.listen 変数を介して 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`にダンプされ、インクルードは`postgresql.conf`でベース構成`postgresql.base.conf`または
custom_confのファイルのいずれかに設定されます。したがって、構成ファイルを再度読み取って、インクルードが存在するかどうかを確認することなく、新しいオプションを適用できます。Patroniがクラスターを管理するために必要な一部のパラメーターは、コマンドラインを使用してオーバーライドされます。
再起動が必要なオプションが変更される場合 pg_settingsのコンテキストとこれらのオプションの実際の値を確認する必要があります。そのノードにpending_restartフラグが設定されます。このフラグは、再起動時にリセットされます。
パラメーターは次の順序で適用されますランタイムに最高の優先順位が与えられます。
ファイル`postgresql.base.conf`または
custom_confファイル設定されている場合からパラメータをロードしますファイル`postgresql.conf`からパラメータをロードします
ファイル`postgresql.auto.conf`からパラメータをロードします
`-o --name=value`を使用した実行時パラメーター
これにより、すべてのノードの構成2、 ALTER SYSTEM を使用した特定のノードの構成3が可能になり、パトロニの実行に不可欠なパラメーターが適用されるように保証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に完全に存在しない場合、または無効な場合、リーダーのみがオンディスクダンプからこれらのオプションを復元できます。
構成の生成と検証
Patroniは、Patroni local configuration 生成と検証のためのコマンドラインインターフェイスを提供します。 patroni 実行可能ファイルを使用すると、次のことができます。
サンプルのローカルPatroni構成を作成します。
ローカルで実行されているPostgreSQLインスタンスのPatroni構成ファイルを作成しますたとえば Patroni integration の準備手順として。
指定されたPatroni構成ファイルを検証します。
Patroni構成のサンプル
patroni --generate-sample-config [configfile]
説明
yaml 形式でサンプルのPatroni構成ファイルを生成します。パラメーター値は yaml を使用して定義されます。それ以外の場合、パトロニで使用されるデフォルトまたはユーザーが後で定義する値の #FIXME 文字列。
一部のデフォルト値は、ローカル設定に基づいて定義されます。
postgresql.listen 現在のマシンのホスト名と標準の
5432ポートのgethostname呼び出しによって返されたIPアドレス。postgresql.connect_address 現在のマシンのホスト名と標準の
5432ポートのgethostname呼び出しによって返されたIPアドレス。postgresql.authentication.rewind は、PostgreSQLバージョンをバイナリから定義でき、バージョンが11以降の場合にのみ定義されます。
restapi.listen 現在のマシンのホスト名と標準の
8008ポートのgethostname呼び出しによって返されたIPアドレス。restapi.connect_address 現在のマシンのホスト名と標準の
8008ポートのgethostname呼び出しによって返されたIPアドレス。
パラメーター
configfile - 結果の保存に使用される構成ファイルへのフルパス。提供されない場合、結果は stdout に送信されます。
実行中のインスタンスのPatroni構成
patroni --generate-config [--dsn DSN] [configfile]
説明
ローカルで実行されているPostgreSQLインスタンスの yaml 形式でPatroni構成を生成します。 PostgreSQL接続には、提供されたDSN優先またはPostgreSQL yaml _のいずれかが使用されます。パスワードを提供しない場合、プロンプトから入力する必要があります。
ソースPostgresインスタンスで定義されたすべての非内部GUCは、構成ファイル、postmasterコマンドライン、または環境変数を介して設定された場合とは無関係に、次のPatroni構成パラメーターのソースとして使用されます。
scope
cluster_nameGUC値。postgresql.listen
listen_addressesおよびportGUC値。postgresql.datadir
data_directoryGUC値。postgresql.parameters
archive_command、restore_command、archive_cleanup_command、recovery_end_command、ssl_passphrase_command、hba_file、ident_file、config_fileGUC値。bootstrap.dcs 収集された他のすべてのPostgreSQL GUC。
scope 、 postgresql.listen または postgresql.datadir がPostgres GUCから設定されていない場合、各 scope 値が使用されます。
値定義に適用される他のルール
name
PATRONI_NAME環境変数設定されている場合は値、それ以外の場合は、現在のマシンのホスト名。postgresql.bin_dir 実行中のインスタンスから収集されたPostgresバイナリへのパス。
postgresql.connect_address 現在のマシンのホスト名とインスタンス接続または
portGUC値に使用されるポートのgethostname呼び出しによって返されたIPアドレス。postgresql.authentication.superuser インスタンス接続に使用される構成。
postgresql.pg_hba ソースインスタンスの
hba_fileから収集された行。postgresql.pg_ident ソースインスタンスの
ident_fileから収集された行。restapi.listen 現在のマシンのホスト名と標準の
8008ポートのgethostname呼び出しによって返されたIPアドレス。restapi.connect_address 現在のマシンのホスト名と標準の
8008ポートのgethostname呼び出しによって返されたIPアドレス。
Environment configuration を使用して定義された他のパラメーターも構成に含まれます。
パラメーター
configfile結果の保存に使用される構成ファイルへのフルパス。提供されない場合、結果は
stdoutに送信されます。dsnGUC値を取得するローカルPostgreSQLインスタンスのオプションのDSN文字列。
Patroni構成の検証
patroni --validate-config [configfile] [--ignore-listen-port | -i]
説明
指定されたPatroni構成を検証し、失敗したチェックに関する情報を出力します。
パラメーター
configfile確認する構成ファイルへのフルパス。指定されない場合、またはファイルが存在しない場合、
PATRONI_CONFIG_VARIABLE環境変数から読み取るか、設定されていない場合はPATRONI_CONFIG_VARIABLEから読み取ろうとします。--ignore-listen-port | -iconfigfileの検証時に既に使用されているlistenポートのバインド失敗を無視するオプションのフラグ。--print | -p検証が成功した後に、ローカル構成環境構成オーバーライドを含むを印刷するオプションのフラグ。