Configuring pgd-proxy
=====================

TPAは、\ ``role`` に\ ``pgd-proxy`` を含むインスタンスに、PGD
5を使用したPGD-Always-ONアーキテクチャのpgd-proxyをインストールして構成します。

（デフォルトでは、 :ref:`PGD-Always-ON architecture <PGD-Always-ON>` 

すべての場所のすべてのデータノードで\ ``pgd-proxy``
を実行しますが、代わりに\ ``--add-proxy-nodes-per-location 3``
を使用して追加のプロキシインスタンスをいくつでも作成できます。）

構成
----

``pgd-proxy`` は、 SQL関数を介してPGDレベルで構成されます。

.. csv-table::
  :header: Hash,Function,Description
  :widths: 12,12,18
  :align: left
  :class: longtable

  `pgd_proxy_options`,`bdr.alter_proxy_option()`,pgd-proxy構成、例ポート
  `bdr_node_groups`,`bdr.alter_node_group_option()`,プロキシのノードグループの構成、例`enable_proxy_routing`
  `bdr_node_options`,`bdr.alter_node_option()`,個々のPGDノードのルーティング構成

詳細については、PGDのドキュメントを参照してください。

bdr_node_groups
^^^^^^^^^^^^^^^

pgd-proxyに関連するグループレベルのオプションは、他のノードグループオプションとともに\ ``bdr_node_groups``
の下で設定できます。

::

   cluster_vars:
     bdr_node_groups:
     - name: group1
       options:
         enable_proxy_routing: true

グループでpgd-proxyを有効にするには、 ``enable_proxy_routing``
を\ ``true`` に明示的に設定する必要があることに注意してください。

bdr_node_options
^^^^^^^^^^^^^^^^

pgd-proxyに関連するノードレベルのオプションは、任意のPGDインスタンスの\ ``bdr_node_options``
の下で設定できます。

::

   instances:

   - Name: first
     vars:
       bdr_node_options:
         route_priority: 42

pgd_proxy_options
^^^^^^^^^^^^^^^^^

アタッチされているグループまたはノードではなく、pgd-proxyインスタンス自分自身のオプションは、\ ``cluster_vars``
（すべてのプロキシに適用）の下の\ ``default_pgd_proxy_options``
の下、またはpgd-proxyインスタンスの\ ``pgd_proxy_options``
の下で設定できます。

::

   cluster_vars:
     default_pgd_proxy_options:
       listen_port: 6432

   instances:

   - Name: someproxy
     vars:
       pgd_proxy_options:
         listen_port: 9000

この場合、他のインスタンスは\ ``cluster_vars`` から\ ``listen_port``
設定を取得しますが、 ``someproxy``
はそのデフォルト設定をオーバーライドし、インスタンスの ``vars``
セクションで独自の\ ``listen_port`` を構成します。

PGDプロキシhttp(s)ヘルスプローブ
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

プロキシの状態を監視するためのapiエンドポイントを提供するPGDプロキシのhttp(s)サービスを有効にして構成できます。

``cluster_vars`` の下の\ ``pgd_http_options``
またはインスタンス\ ``vars`` は、 ``pgd-proxy-config.yml`` の\ ``proxy``
トップセクションの\ ``http`` サブセクションの下にあるhttp(s)
APIを定義するすべての設定を保存します。

変数には、次のキーを含めることができます。

::

   enable: false
   secure: false
   cert_file: "/etc/tpa/harp_proxy/harp_proxy.crt"
   key_file: "/etc/tpa/harp_proxy/harp_proxy.key"
   host: <inventory_hostname>
   port: 8080
   probes:
     timeout: 10s
   endpoint: "<valid dsn>"

``secure: true`` を使用し、独自の証明書とキーを使用する場合は、
``cert_file`` および\ ``key_file`` キーの両方が必要です。

``deploy``
を実行する前に、証明書とキーの両方がターゲットノード上の指定された場所で利用可能であることを確認する必要があります。

クラスター固有のCA証明書を使用してTPAで証明書とキーを生成する場合は、
``cert_file`` と ``key_file`` の両方を空のままにします。 TPA
CA証明書は「よく知られた」ものではありません。エンドポイントをプローブする各マシンのトラストストアにこの証明書を追加する必要があります。
CA証明書は、TPAノードのクラスターディレクトリにあります。\ ``<cluster_dir>/ssl/CA.crt``
after ``deploy`` 。

使用可能なapiエンドポイントの詳細については、pgd-proxyドキュメントを参照してください。
