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

pgd-proxyパッケージバージョン
-----------------------------

デフォルトでは、TPAは\ ``pgd-proxy``
の利用可能な最新バージョンをインストールします。

``config.yml`` ファイルの\ ``cluster_vars``
セクションの下に\ ``pgd_proxy_package_version: xxx``
を含めることにより、インストールされる\ ``pgd-proxy``
パッケージのバージョンを指定できます。

.. code:: yaml

   cluster_vars:
       …
       pgd_proxy_package_version: 5.0.0-1
       …

aptまたはyumが受け入れるバージョン指定子を使用できます。

バージョンが一致しない場合は、 ``*``
ワイルドカードを追加してみてください。これは、パッケージバージョンに\ ``2:...``
のようなエポック修飾子がある場合に必要になることがよくあります。

pgd-プロキシの構成
------------------

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

デフォルトでは、 :ref:`PGD-Always-ON <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-プロキシを有効にするには、\ ``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インスタンスが接続されているグループまたはノードではなく、pgd-proxyインスタンス自分自身のオプションは、\ ``default_pgd_proxy_options``
の下、\ ``cluster_vars``
すべてのプロキシに適用されます、またはpgd-proxyインスタンスの\ ``pgd_proxy_options``
の下で設定できます。

::

   cluster_vars:
     default_pgd_proxy_options:
       listen_port: 6432
       read_listen_port: 6433

   instances:

   - Name: someproxy
     vars:
       pgd_proxy_options:
         listen_port: 9000
         read_listen_port: 9001

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

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

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

``cluster_vars`` またはインスタンス\ ``vars``
の下の\ ``pgd_http_options`` は、 ``pgd-proxy-config.yml`` の\ ``proxy``
トップセクションの\ ``http`` サブセクションの下にあるhttp
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>"

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

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

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

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