パトローニの構成¶
Patroniの構成には3つのタイプがあります。
- グローバル dynamic configuration 。
これらのオプションはDCS(分散構成ストア)に保存され、すべてのクラスターノードに適用されます。動的構成は、 patronictl編集構成 ツールまたはPatroni patronictl編集構成 を使用していつでも設定できます。変更されたオプションがスタートアップコンフィギュレーションの一部ではない場合、オプションはすべてのノードに非同期的に(次のウェイクアップサイクル時に)適用され、その後リロードされます。構成を適用するためにノードの再起動が必要な場合(値が変更されている場合、コンテキストpostmasterを持つ patronictl編集構成 の場合)、これを示す特別なフラグ
pending_restartがmembers.dataJSONに設定されます。さらに、ノードのステータスは/"restart_pending/": trueを表示することでこれを示します。
- ローカル configuration file (patroni.yml)。
これらのオプションは構成ファイルで定義され、動的構成より優先されます。
patroni.ymlは、PatroniプロセスにSIGHUPを送信するか、POST /reloadREST-APIリクエストを実行するか、patroni.ymlを実行することで、実行時に(Patroniを再起動せずに)変更および再ロードできます。ローカル構成は、単一のYAMLファイルまたはディレクトリのいずれかになります。ディレクトリの場合、そのディレクトリ内のすべてのYAMLファイルがソートされた順序で1つずつロードされます。キーが複数のファイルで定義されている場合、最後のファイル内のキーが優先されます。
- Environment configuration 。
環境変数を使用して、一部の「ローカル」構成パラメータを設定/上書きすることができます。環境構成は、動的環境で実行していて、一部のパラメーターが事前にわかっていない場合に非常に役立ちます(たとえば、
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 :ホットスタンバイ
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.conf よりも高い優先順位が与えられます。
また、 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」が存在する場合、名前が変更された「元の」設定が含まれており、基本設定として使用されます。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)が可能になり、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ノードは、構成が変更されるたびにDCSオプションの状態をディスクにダンプし、Postgresデータディレクトリにあるファイル patroni.dynamic.json にダンプします。これらのオプションがDCSに完全に存在しない場合、または無効な場合、リーダーのみがディスク上のダンプからこれらのオプションを復元できます。
構成の生成と検証¶
Patroniは、Patroni local configuration の生成と検証のためのコマンドラインインターフェイスを提供します。 patroni 実行可能ファイルを使用すると、次のことが可能になります。
サンプルのローカルPatroni構成を作成します。
ローカルで実行されているPostgreSQLインスタンスのPatroni構成ファイルを作成します(例: Patroni integration の準備ステップとして)。
指定されたPatroni構成ファイルを検証します。
Patroni構成のサンプル¶
patroni --generate-sample-config [configfile]
説明¶
サンプルのPatroni構成ファイルを yaml 形式で生成します。パラメータ値は yaml を使用して定義されます。設定されていない場合は、Patroniで使用されるデフォルト値または後でユーザーが定義する値の #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インスタンス用のPatroni構成を yaml 形式で生成します。指定されたDSN(優先されます)またはPostgreSQL yaml _のいずれかがPostgreSQL接続に使用されます。パスワードが指定されていない場合は、プロンプトから入力する必要があります。
ソースPostgresインスタンスで定義されたすべての非内部GUCは、設定ファイル、ポストマスターコマンドライン、または環境変数を通じて設定された場合には独立して、次のPatroni設定パラメータのソースとして使用されます。
scope :
cluster_nameGUC値。postgresql.listen :
listen_addressesおよびportのGUC値。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 :収集された他のすべてのPostgreSQLGUC。
scope 、 postgresql.listen または postgresql.datadir がPostgresGUCから設定されていない場合は、それぞれの 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]
説明¶
指定されたPatroni構成を検証し、失敗したチェックに関する情報を出力します。
パラメーター¶
configfile確認する構成ファイルへのフルパス。指定されない場合、またはファイルが存在しない場合は、
PATRONI_CONFIG_VARIABLE環境変数からの読み取りを試みます。設定されていない場合は、PATRONI_CONFIG_VARIABLEからの読み取りを試みます。