postgresql.conf#
TPAは、その下にさまざまな.conf ファイルを含むconf.d
ディレクトリを作成し、メイン postgresql.conf のinclude_dir
を使用してこれらの追加構成ファイルを使用します。
Postgres構成ファイルpostgresql.conf、pg_ident.conf、およびpg_hba.confおよびconf.d
の下のインクルードファイルは、常にpostgres_conf_dir
に保存されます。これはデフォルトでpostgres_data_dir
と同じですが、構成をデータディレクトリとは別にしておきたい場合は、別の場所に設定できます。
主な構成メカニズムは、変数を直接設定することです。
cluster_vars:
temp_buffers: 16MB
log_connections: on
autovacuum_vacuum_cost_limit: -1
effective_cache_size: 4GB
max_connections: 300
max_wal_senders: 32
TPAは、構成を複数のファイルに分割します。
2つのメインファイルは、0000-tpa.conf
および0001-tpa_restart.conf
です。これらには、それぞれサーバーのリロードまたは再起動を必要とする設定が含まれています。展開中に、TPAは正しいファイルに変更を書き込み、必要に応じてPostgresをリロードまたは再起動します。
TPAは、特定の状況オプションの拡張機能を構成する場合などに他のファイルを使用する場合がありますが、通常、特定のパラメーターが正確にどこに設定されているかを気にする必要はありません。
次回tpaexec deploy
を実行したときに変更が上書きされる可能性があるため、 conf.d
の下のファイルは決して編集しないでください。
postgres_port#
Postgresポートは、デフォルト値から別の有効なポート番号に上書きできます。
cluster_vars:
postgres_port: 5433
postgres_port
は、値が正しく共有され、この値に依存するすべてのコンポーネントで使用されることを保証ため、
postgres_conf_settings を介してポートを設定するよりも優先されます。
postgres_conf_settings#
TPAは、多くの使用可能なpostgresql.conf設定すべてではありませんが、直接設定できるtemp_buffers
やmaintenance_work_mem のような変数を提供します。
postgres_conf_settings
を使用して、TPAで認識されるかどうかにかかわらず、パラメーターを設定できます。
postgresql.conf
に表示されるのとまったく同じように値を引用符で囲む必要があります。
cluster_vars:
effective_cache_size: 2GB
postgres_conf_settings:
effective_cache_size: 4GB
authentication_timeout: 1min
synchronous_standby_names: >-
any 2 ("first", "second", "third")
bdr.global_lock_statement_timeout: 60s
これは、TPAがネイティブに認識しない設定で最も役立ちますが、任意のパラメーターに使用できますたとえば、
effective_cache_size
は変数として設定できますが、authentication_timeout はできません。
これらの設定はconf.d/9900-role-settings.conf
に書き込まれるため、他の方法で設定された変数より優先されます。
postgres_conf_settings
の下の値を変更した場合、TPAは、リロードが変更を有効にするのに十分であるかどうか、または再起動が必要かどうかを知る方法がありません。したがって、常にサーバーを再起動して変更をアクティブにします。これが、可能な場合は常に変数を直接使用することをお勧めする理由です。
effect_cache_size#
デフォルトでは、TPAはeffective_cache_size
を使用可能なメモリの50%に設定します。別の比率を使用するようにeffective_cache_size_ratio: 0.35
を設定するか、effective_cache_size_mb: 796
を特定のMB数に設定するか、effective_cache_size: "8GB"
などの正確な値を直接指定することにより、このデフォルトをオーバーライドできます。
Postgresロギング#
デフォルトでは、TPAはPostgres log_destination GUCをsyslog
として構成し、Postgresログを/var/log/postgres/postgres.log
に書き込むようにrsyslogを構成します。
次のクラスター変数を使用して、これらのデフォルトを変更できます。
postgres_log_fileは、ログファイルへのパスです。デフォルト/var/log/postgres/postgres.logpostgres_log_file_modeは、ログファイルのモードです。デフォルト0640postgres_log_directory_modeは、ログディレクトリのモードです。デフォルト0700log_destinationは、同じ名前のPostgres GUCを設定します。 デフォルトsysloglogging_collectorは、同じ名前のPostgres GUCを設定します。log_destinationがsyslogの場合はデフォルトoff、それ以外の場合はon。
syslog 以外のlog_destination
を選択すると、TPAはログを書き込むようにPostgresロギングコレクターを設定します。すべての場合、TPAはディレクトリの作成とログローテーションの構成を行います。
次の例は、 rsyslog
を使用して選択した場所にログを記録するようにTPAに指示します。
cluster_vars:
[...]
postgres_log_file: /srv/fantastic_logs/pg_server.log
この例では、ログは同じ場所にありますが、 Postgresロギングコレクターを使用してJSONログを書き込み、グループメンバーのログディレクトリでの読み取りと実行を許可しています。
cluster_vars:
[...]
postgres_log_file: /srv/fantastic_logs/pg_server.log
postgres_log_directory_mode: 0750
log_destination: jsonlog
TPAからではなく。
最終的な拡張子を含むログファイルの正確なパスにアクセスする必要がある場合たとえばフックの一部として、これはAnsibleファクトpostgres_log_file_with_extension
に保存されます。直接設定することはできません。
デフォルトでは、TPAはプライベートキーと自己署名TLS証明書を生成します。これらはPostgresがそれぞれssl_key_file
およびssl_cert_file
として使用します。ファイルはTPAクラスター名cluster_name.key
およびcluster_name.crt を使用して名前付けられ、/etc/tpa
にあります。その結果、0001-tpa_restart.conf
では次のデフォルト構成になります。
ssl_key_file=/etc/tpa/cluster_name.key
ssl_cert_file=/etc/tpa/cluster_name.crt
これは、クライアントとサーバー間のトラフィックが転送中に暗号化されることを保証には十分です。
独自の証明書を提供するには、証明書をターゲットノードに Uploading artifacts としてアップロードし、次のクラスター変数を指定してパスを設定します。
cluster_vars:
...
artifacts:
- type: file
dest: /path/to/your_key.key
src: /local/path/to/your_key.key
owner: root
group: root
mode: "0644"
- type: file
dest: /path/to/your_cert.crt
src: /local/path/to/your_cert.crt
owner: root
group: root
mode: "0600"
ssl_key_file: /path/to/your_key.key
ssl_cert_file: /path/to/your_cert.crt
または、キーと証明書をデフォルトの場所にアップロードすると、TPAは独自の生成の代わりにそれらを使用し、
ssl_key_file またはssl_cert_file
を指定する必要はありません。ただし、 /etc/tpa
は、アーティファクトのアップロード時に存在しないため、明示的に作成する必要があることに注意してください。これらのファイルの権限と所有権は、展開中にpostgres
ユーザーが作成されるときにTPAによって調整されます。
cluster_vars:
...
artifacts:
- type: path
path: /etc/tpa
state: directory
owner: root
group: root
mode: "0755"
- type: file
dest: /etc/tpa/cluster_name.key
src: /local/path/to/your_key.key
owner: root
group: root
mode: "0644"
- type: file
dest: /etc/tpa/cluster_name.crt
src: /local/path/to/your_cert.crt
owner: root
group: root
mode: "0600"
TPAで生成された構成をオーバーライドするには2つの方法があります。
最初のおよび推奨されるオプションは、ALTER SYSTEM
を使用することです。これは、常に構成ファイルのすべてより優先されます。
ALTER SYSTEM SET bdr.global_lock_statement_timeout TO 60s;
conf.d/9999-override.conf を編集することもできます。
echo "bdr.global_lock_statement_timeout=60s" >> conf.d/9999-override.conf
conf.d
の下の他のすべてのファイルは、展開中に構成が変更された場合に上書きされる可能性がありますが、TPAは、最初に空のファイルを作成した後、9999-override.conf
を変更することはありません。
変更する設定によっては、SELECT pg_reload_conf()
を実行するか、サーバーを再起動して変更を有効にする必要がある場合があります。
postgresql.confをスクラッチから生成する#
デフォルトでは、TPAはinclude_dir
を追加する以外に、デフォルトのinitdb
生成されたpostgresql.confファイルをそのまま残します。通常、この動作をオーバーライドする必要はありませんが、そうするようにpostgres_conf_template
を設定できます。
cluster_vars:
postgres_conf_template: pgconf.j2
これで、クラスターディレクトリのtemplates/pgconf.j2
を使用してpostgresql.confが生成されます。