Configuring haproxy
===================

TPAは、 ``role`` に\ ``haproxy``
が含まれるインスタンスにhaproxyをインストールおよび構成します。

デフォルトでは、 haproxyは\ ``127.0.0.1:5432``
で、同じインスタンスで実行されている :ref:`Repmgrリダイレクトpgbouncer <Repmgrリダイレクトpgbouncer>` によって転送された要求をリッスンします。要求を転送する\ ``haproxy_backend_servers``
のリストを指定する必要があります。

TPAは、デフォルトでhaproxyの最新バージョンをインストールします。
``haproxy_package_version: 1.9.15*``
たとえば、を設定することにより、特定のバージョンをインストールできます。

注
:ref:`tpaexec-configure <Cluster configuration>` のpackage_versionでのワイルドカードの使用の制限を参照してください。

Haproxyパッケージは、アーキテクチャのタイプに応じて選択されます。
EDB管理対象haproxyパッケージを使用できますが、サブスクリプションが必要です。必要に応じて、
PGDGエクストラリポジトリからのパッケージをインストールできます。

``haproxy`` インスタンスで次の変数を設定できます。

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

  `haproxy_bind_address`,127.0.0.1\*,`failover_manager`がパトロニの場合、haproxyが\ *0.0.0.0をバインドするアドレス。 ** ユーザーはこの値を、クラスターネットワーキングに適したより制限的なものに変更する必要があります** 
  `haproxy_port`,5432 (5444 for EPAS),TCPポートHAプロキシがリッスンする必要がある
  `haproxy_read_only_port`,5433 (5445 for EPAS),読み取り専用ロードバランサーのTCPポート
  `haproxy_backend_servers`,None,Postgresインスタンス名のリスト
  `haproxy_maxconn`,`max_connections`×0.9,バックエンドサーバーごとに許可される接続の最大数。デフォルトは、バックエンドの`max_connections`設定から取得されます
  `haproxy_peer_enabled`,True\*,既知のハプロキシホストを`peer`リストとして追加します。  \*`False` `failover_manager`がharpまたはpatroniの場合。

読み取り専用ロードバランサー
----------------------------

データベースへの読み取り専用アクセスを追加ポートでリッスンするようにHaproxyを構成できます。現時点では、これはPatroniフェールオーバーマネージャーでのみサポートされています。バックエンドヘルスチェックは、どのpostgresインスタンスが現在レプリカとして機能し、ラウンドロビンロードバランシングアルゴリズムを使用してトラフィックを送信するかを判断します。

読み取り専用ロードバランサーはデフォルトで無効になっていますが、
cluster_vars変数 ``haproxy_read_only_load_balancer_enabled``
を使用して有効にできます。

サーバーオプション
------------------

TPAは、 ``default-server``
行とバックエンドサーバーごとに1行があるバックエンドで\ ``/etc/haproxy/haproxy.cfg``
を生成します。最初のサーバーを除くすべては「バックアップ」サーバーとしてマークされます。

``haproxy_default_server_extra_options``
をhaproxyインスタンスのオプションのリストに設定して、\ ``default-server``
行にオプションを追加します。そして、 ``haproxy_server_options``
をバックエンドサーバーのオプションのリストに設定して、各バックエンドの個々のサーバー行にオプションデフォルトをオーバーライドします。

ssl-dh-param-fileに使用されるRSAキーサイズは、 ``cluster_vars``
セクションに変数\ ``ha_proxy_dhparams_key_size``
を追加することにより変更できます。

例
--

.. code:: yaml

   cluster_vars:
     ha_proxy_dhparams_key_size: 4096
   instances:

   - Name: one
     vars:
       haproxy_server_options:
       - maxconn 33

   - Name: two
   …

   - Name: proxy
     role:
     - haproxy
     vars:
       haproxy_backend_servers:
       - one
       - two
       haproxy_default_server_extra_options:
       - on-error mark-down
       - on-marked-down shutdown-sessions
