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に含まれる内容に関係なく、デプロイ中にノードの現在のロールを検出します。