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

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

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

TPAは、デフォルトでhaproxyの最新バージョンをインストールします。別のバージョンをインストールするには、
``haproxy_package_version: 1.9.15*``
または有効なバージョン指定子を設定します。

..  Note::
: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,バインドするhaproxyのアドレス。
  `haproxy_port`,5432 (5444 for EPAS),haproxyがリッスンするTCPポート。
  `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インスタンスを特定し、ラウンドロビンロードバランシングを使用してトラフィックを分散します。

読み取り専用ロードバランサーはデフォルトで無効になっています。
``haproxy_read_only_load_balancer_enabled: true``
を設定することによりオンにできます。

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

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

``default-server`` 行にオプションを追加するには、
haproxyインスタンスのオプションのリストに\ ``haproxy_default_server_extra_options``
を設定します。

各バックエンドの個々のサーバー行にオプションデフォルトをオーバーライドするには、
``haproxy_server_options``
をバックエンドサーバーのオプションのリストに設定します。

例
--

.. code:: yaml

   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
