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 に何が含まれているかに関係なく、展開中にノードの現在のロールを検出しますたとえば、別のノードがリーダーである場合。