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*``
を設定することで、代わりに特定のバージョンをインストールできます（例）。

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

Haproxyパッケージは、アーキテクチャの種類に応じて選択されます。 EDB
managed
haproxyパッケージを使用できますが、サブスクリプションが必要です。必要に応じて、
PGDG extrasリポジトリのパッケージをインストールできます。

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

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

  `haproxy_bind_address`,127.0.0.1,haproxyがバインドするアドレス
  `haproxy_port`,5432 (5444 for EPAS),TCPポートhaproxyはリッスンする必要があります
  `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\*,既知のhaproxyホストを`peer`リストとして追加します。 <br/>\*`False` `failover_manager`がハープまたはパトニーの場合。

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

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``
をバックエンドサーバー上のオプションのリストに設定して、オプション（デフォルトをオーバーライドします）を各バックエンドの個々のサーバー行に追加します。

例
--

.. 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
