Patroni cluster management commands#
次のコマンドオプションを使用して、M1アーキテクチャでシングルマスターフェールオーバーマネージャーとしてPatroniを使用できます。
tpaexec configure cluster_name -a M1 --enable-patroni --postgresql 14
次のconfig.yml
オプションを設定することにより、Patroniをフェールオーバーマネージャーとして使用することもできます。
cluster_vars:
failover_manager: patroni
RedHatに展開する場合、PGDG リポジトリをconfig.yml
のyumリポジトリリストに追加する必要があります。
cluster_vars:
yum_repository_list:
- PGDG
TPA configure は、3つのetcdノードと2つのhaproxyノードを追加します。
etcdは、分散構成ストアDCSに使用されます。
Patroniは他のDCSバックエンドをサポートしていますが、現在EDBまたはTPAではサポートされていません。
TPAは、既存のPostgreSQLスタンドアロンサーバーを変換するPatroniの機能を使用します。このメカニズムにより、TPAは構成を初期化および管理できます。単一のPostgreSQLサーバーとデータベースが作成されると、Patroniはレプリカを作成し、レプリケーションを構成します。 TPAは、セットアップ中に使用されたPostgres構成ファイルを削除します。
これが設定されると、クラスターのTPAとconfig.yml
の設定を使用してPostgresの管理を続行できます。コマンドライン
patronictl やREST
APIなどのPatroniインターフェイスを使用することもできますが、可能な限りTPAメソッドを使用することをお勧めします。
構成オプション#
TPAにPatroniを展開するときに、これらの構成変数を使用して、特定の動作を制御できます。
Variable |
Default value |
Description |
|---|---|---|
patroni_super_user |
postgres |
スーパーユーザーロールのPostgresで作成するユーザー。 |
patroni_replication_user |
replicator |
レプリケーションロールのPostgresで作成するユーザー名。 |
patroni_restapi_user |
patroni |
Patroni REST API用に構成するユーザー名。 |
patroni_rewind_user |
rewind |
pg_rewindファンクションのpostgresで作成するユーザー名。 |
patroni_installation_method |
pkg |
パッケージまたはソースたとえば、GitリポジトリまたはDockerの場合はローカルソースディレクトリなどからPatroniをインストールします。 |
patroni_ssl_enabled |
no |
REST APIおよびctl接続のSSLを有効にするかどうか。使用可能な場合は、クラスターSSL証明書とCAを使用します。 |
patroni_rewind_enabled |
yes |
Postgresの巻き戻しを有効にするかどうか。 patroni_rewind_userで定義されたユーザーを作成し、 configセクションを追加します。 |
patroni_watchdog_enabled |
no |
追加のスプリットブレイン防止のためにカーネルウォッチドッグを構成するかどうか。 |
patroni_dcs |
etcd |
DCSに使用するバックエンド。現在、唯一のオプションはetcdです。 |
patroni_listen_port |
8008 |
REST APIのTCPポート番号。 |
patroni_conf_settings |
{} |
Patroni構成のオーバーライドを含む構造化データオブジェクト。部分的なデータを提供でき、生成された構成とマージされます。実行時に既知のインスタンス情報に基づいて生成された値をオーバーライドしないように注意してください。 |
patroni_dynamic_conf_settings |
{} |
DCS設定専用のオプションの構造化データ。これは`patroni_conf_settings`にマージされます。 |
patroni_repl_max_lag |
None |
これは、haproxy_read_only_load_balancer_enabled`がtrueの場合にのみhaproxyバックエンドヘルスチェックで使用されます。 `/replica?lag`の可能な値については、 :ref:`Configuring lvm-direct for production <Patroni cluster management commands> を参照してください。 |
Patroni構成ファイル設定#
Patroniの構成は、Patroniデーモンによって設定されたデフォルトから始まり、DCSからロードされた構成、そして最後にローカル構成から3つのレイヤーから構築されます。最後は、構成ファイルから制御でき、環境を介してオーバーライドします。 TPAは構成ファイルを制御し、値はこの順序で構築されます。
APIに送信され、構成ファイルのブートストラップセクションに保存されるDCS構成。
postgresのTPA変数はDCS設定にロードされます。 postgresql.conf.md を参照してください。一部の機能はサポートされていません。以下のノートを参照してください。PatroniはDCS設定のデフォルトです。
patroni_dynamic_conf_settingsのユーザー指定のデフォルト。 DCS設定をオーバーライドする場合は、ここで行うことができます。
YAML構成ファイルに保存されるローカル構成
bootstrap.dcs前の手順からロードされました。patroni_ssl_enabledなどの機能フラグによって有効になる構成。
構成オプションの概要 のテーブルを参照してください。
次に、最後にユーザー指定設定からオーバーロードされます
patroni_conf_settingsオプション。機能フラグによって制御されない構成を変更または追加する場合、これはそれに最適な場所です。
構成は、IPアドレス、ポート番号、クラスターロールなどのクラスター情報からTPAによって生成された構成にマージされます。クラスターの安定した動作に影響を与える可能性があるため、オーバーライドするものには注意してください。
PatroniはすべてのPostgres構成をDCSに保存し、これがPostgresに配布される方法と時期を制御するため、TPAの一部の機能はPatroniと互換性がありません。
postgres_conf_template設定でpostgresql.confの生成に使用されたテンプレートは変更できません。設定
postgres_conf_dirでは、Postgres構成ファイルの場所を変更することはできません。
TPAのPatroni構成 config.yml#
単一の値をオーバーライドできます。
cluster_vars:
patroni_conf_settings:
bootstrap:
dcs:
ttl: 120
フルブロックをオーバーライドすることもできますPatroniドキュメントからの例を使用
cluster_vars:
patroni_conf_settings:
restapi:
http_extra_headers:
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
https_extra_headers:
Strict-Transport-Security: max-age=31536000; includeSubDomains
デフォルトのTPA構成変数に存在する値またはセクションを無効にする場合は、値をnull
に設定できます。これにより、Patroniは構成ファイルをロードするときにこのセクションを無視します。
たとえば、 log のデフォルトのTPA構成は次のとおりです。
log:
dir: /var/log/patroni
ロギングをオフにするには、これをconfig.yml に追加します。
cluster_vars:
patroni_conf_settings:
log: null
TPAは、Patroniクラスターを管理するための最小限のツールセットを提供します。
ステータス#
Patroniに従ってTPAクラスターの現在のステータスを確認するには、次のコマンドを実行します。
tpaexec status cluster_name
スイッチオーバー#
レプリカノードへのスイッチオーバーを実行するにはたとえば、メンテナンスを実行するには、次のコマンドを実行します。
tpaexec switchover cluster_name <new_primary>
new_primary
引数は、正常なレプリカとして現在実行されている既存のクラスターノードの名前である必要があります。スイッチオーバーが実行される前に、これがtrueを確認するためにチェックが実行されます。
スイッチオーバーが実行されたら、 deploy およびtest
を実行して、正常なクラスターを確認することをお勧めします。
tpaexec deploy cluster_name
tpaexec test cluster_name
TPAは、config.yml
に何が含まれているかに関係なく、展開中にノードの現在のロールを検出しますたとえば、別のノードがリーダーである場合。