Patroni cluster management commands
===================================

次のコマンドオプションを使用して、M1アーキテクチャでシングルマスターフェールオーバーマネージャーとしてPatroniを使用できます。

.. code:: shell

   tpaexec configure cluster_name -a M1 --enable-patroni --postgresql 14

次の\ ``config.yml``
オプションを設定することにより、Patroniをフェールオーバーマネージャーとして使用することもできます。

.. code:: yaml

   cluster_vars:
     failover_manager: patroni

RedHatに展開する場合、\ ``PGDG`` リポジトリを\ ``config.yml``
のyumリポジトリリストに追加する必要があります。

.. code:: yaml

   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を展開するときに、これらの構成変数を使用して、特定の動作を制御できます。

.. csv-table::
  :header: Variable,Default value,Description
  :widths: 12,12,18 
  :align: left
  :class: longtable

  `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設定にロードされます。 :ref:`postgresql.conf.md <postgresql.conf>` 
   を参照してください。一部の機能はサポートされていません。以下のノートを参照してください。

-  PatroniはDCS設定のデフォルトです。

-  ``patroni_dynamic_conf_settings`` のユーザー指定のデフォルト。
   DCS設定をオーバーライドする場合は、ここで行うことができます。

YAML構成ファイルに保存されるローカル構成

-  ``bootstrap.dcs`` 前の手順からロードされました。

-  ``patroni_ssl_enabled`` などの機能フラグによって有効になる構成。
:ref:`構成オプションの概要 <構成オプションの概要>` のテーブルを参照してください。

-  次に、最後にユーザー指定設定からオーバーロードされます\ ``patroni_conf_settings``
   オプション。機能フラグによって制御されない構成を変更または追加する場合、これはそれに最適な場所です。

構成は、IPアドレス、ポート番号、クラスターロールなどのクラスター情報からTPAによって生成された構成にマージされます。クラスターの安定した動作に影響を与える可能性があるため、オーバーライドするものには注意してください。

PatroniはすべてのPostgres構成をDCSに保存し、これがPostgresに配布される方法と時期を制御するため、TPAの一部の機能はPatroniと互換性がありません。

-  ``postgres_conf_template`` 設定で\ ``postgresql.conf``
   の生成に使用されたテンプレートは変更できません。

-  設定\ ``postgres_conf_dir``
   では、Postgres構成ファイルの場所を変更することはできません。

TPAのPatroni構成 ``config.yml``
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

単一の値をオーバーライドできます。

.. code:: yaml

   cluster_vars:
     patroni_conf_settings:
       bootstrap:
         dcs:
           ttl: 120

フルブロックをオーバーライドすることもできますPatroniドキュメントからの例を使用

.. code:: yaml

   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構成は次のとおりです。

.. code:: yaml

   log:
     dir: /var/log/patroni

ロギングをオフにするには、これを\ ``config.yml`` に追加します。

.. code:: yaml

   cluster_vars:
     patroni_conf_settings:
       log: null

TPAは、Patroniクラスターを管理するための最小限のツールセットを提供します。

ステータス
----------

Patroniに従ってTPAクラスターの現在のステータスを確認するには、次のコマンドを実行します。

.. code:: shell

   tpaexec status cluster_name

スイッチオーバー
----------------

レプリカノードへのスイッチオーバーを実行するにはたとえば、メンテナンスを実行するには、次のコマンドを実行します。

.. code:: shell

   tpaexec switchover cluster_name <new_primary>

``new_primary``
引数は、正常なレプリカとして現在実行されている既存のクラスターノードの名前である必要があります。スイッチオーバーが実行される前に、これがtrueを確認するためにチェックが実行されます。

スイッチオーバーが実行されたら、 ``deploy`` および\ ``test``
を実行して、正常なクラスターを確認することをお勧めします。

.. code:: shell

   tpaexec deploy cluster_name
   tpaexec test cluster_name

TPAは、\ ``config.yml``
に何が含まれているかに関係なく、展開中にノードの現在のロールを検出しますたとえば、別のノードがリーダーである場合。
