Patroni cluster management commands¶
Patroniは、次のコマンドオプションを使用して、M1アーキテクチャーのシングルマスターフェイルオーバーマネージャーとして使用できます。
tpaexec configure cluster_name -a M1 --enable-patroni --postgresql 14
または config.ymlオプションを設定することにより
cluster_vars:
failover_manager: patroni
TPA configure は、3つのetcdノードと2つのhaproxyノードを追加します。
Etcdは、分散構成ストア(DCS)に使用されます。
Patroniは他のDCSバックエンドをサポートしていますが、現在EDBまたはTPAではサポートされていません。
TPAは、既存のPostgreSQLスタンドアロンサーバーを変換するPatroniの機能を使用します。これにより、TPAは構成を初期化および管理できます。単一のPostgreSQLサーバーとデータベースが作成されると、Patroniはレプリカを作成し、レプリケーションを構成します。 TPAは、セットアップ中に使用されたpostgres構成ファイルを削除します。
セットアップが完了すると、Postgresは、TPAとクラスターのconfig.yml
設定を使用して引き続き管理できます。コマンドライン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 |
パトロニREST API用に設定するユーザー名。 |
patroni_rewind_user |
rewind |
pg_rewind関数のためにpostgresで作成するユーザー名。 |
patroni_installation_method |
pkg |
パッケージまたはソースからパトニーをインストールします(例: gitリポジトリまたはdockerの場合はローカルソースディレクトリ)。 |
patroni_ssl_enabled |
no |
REST APIおよびctl接続でSSLを有効にするかどうか。利用可能な場合、クラスターSSL証明書とCAを使用します。 |
patroni_rewind_enabled |
yes |
postgresリワインドを有効にするかどうか、atoi_rewind_userで定義されたユーザーを作成し、 configセクションを追加します。 |
patroni_watchdog_enabled |
no |
追加のスプリットブレイン防止のためにカーネルウォッチドッグを構成するかどうか。 |
patroni_dcs |
etcd |
DCSに使用するバックエンド。現時点で唯一のオプションはetcdです。 |
patroni_listen_port |
8008 |
REST API TCPポート番号 |
patroni_conf_settings |
{} |
パトロニ構成のオーバーライドを持つ構造化データオブジェクト。<br/>部分的なデータを提供でき、生成された構成とマージされます。<br/>実行時に既知のインスタンス情報に基づいて生成された値をオーバーライドしないように注意してください。 |
patroni_dynamic_conf_settings |
{} |
DCS設定専用のオプションの構造化データ。これは`patroni_conf_settings`にマージされます。 |
patroni_repl_max_lag |
None |
これは、 haproxy_read_only_load_balancer_enabled`がtrueの場合にのみhaproxyバックエンドヘルスチェックで使用されます。<br/> `/replica?lag`の可能な値については :ref:`tpaexec-configure <Patroni cluster management commands> を参照してください |
Patroni構成ファイルの設定¶
パトロニの構成は、Patroniデーモンによって設定されたデフォルト、DCSからロードされた構成、最後にローカル構成の3つのレイヤーから構築されます。最後はいずれかの構成ファイルから制御でき、環境を介してオーバーライドします。 TPAは構成ファイルを制御し、値はこの順序で構築されます。
APIに送信され、構成ファイルのブートストラップセクションに保存されるDCS構成:
postgresのTPA変数はDCS設定にロードされます。 postgresql.conf.md を参照してください。一部の機能はサポートされていません。以下の注を参照してください。DCS設定のPatroniデフォルト
patroni_dynamic_conf_settingsのユーザー指定のデフォルト。DCS設定をオーバーライドする場合は、ここで実行できます。
YAML構成ファイルに保存されているローカル構成:
上記の前の手順からロードされた
bootstrap.dcs。patroni_ssl_enabledなどの機能フラグによって有効にされる構成。上記の表を参照してください。最後に、ユーザー指定の設定、
patroni_conf_settingsオプションからオーバーロード。機能フラグで制御されない構成を変更または追加する場合は、これが最適な場所です。
構成は、IPアドレス、ポート番号、クラスターの役割などのクラスター情報からTPAによって生成された構成の上に マージ されることに注意してください。これはクラスターの安定した動作に影響を与える可能性があるため、オーバーライドに注意してください。
Patroniはすべてのpostgres構成をDCSに保存し、これをpostgresに配布する方法と時期を制御するため、TPAの一部の機能はパトロニと互換性がありません。
postgres_conf_template設定でpostgresql.confを生成するために使用されるテンプレートを変更することはできません。設定
postgres_conf_dirでPostgres構成ファイルの場所を変更することはできません。
TPA config.yml でのPatroni構成¶
単一の値をオーバーライドできます。
cluster_vars:
patroni_conf_settings:
bootstrap:
dcs:
ttl: 120
またはフルブロック(Patroni docsの例):
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
に設定できます。これにより、構成ファイルをロードするときにパトニーはこのセクションを無視します。
たとえば、 log のデフォルトのTPA構成は次のとおりです。
log:
dir: /var/log/patroni
ログをオフにするには、これをconfig.yml に追加します。
cluster_vars:
patroni_conf_settings:
log: null
TPAは、Patroniクラスターを管理するためのこれらの最小限のツールセットを提供します。
ステータス¶
Patroni runに従ってTPAクラスターの現在のステータスを表示するには
tpaexec status cluster_name
スイッチオーバー¶
レプリカノードへのスイッチオーバーを実行するには(メンテナンスの実行など)、次のコマンドを実行します
tpaexec switchover cluster_name new_primary
new_primary引数は、現在正常なレプリカとして実行されている既存のクラスターノードの名前である必要があります。スイッチオーバーが実行される前に、これが当てはまることを確認するためのチェックが実行されます。
スイッチオーバーが実行されたら、 deploy およびtest
を実行して、クラスターが正常であることを確認することをお勧めします。
tpaexec deploy cluster_name
tpaexec test cluster_name
TPAは、たとえば別のノードがリーダーである場合など、config.ymlに含まれる内容に関係なく、デプロイ中にノードの現在のロールを検出します。