Installing PGD Proxy
====================

PGDプロキシのインストール
-------------------------

2つの方法を使用して、PGDプロキシをインストールして構成し、 EDB
Postgres分散クラスターを管理できます。
PGDプロキシをインストールして構成する推奨方法は、クラスターの展開と管理にEDB
Trusted Postgres ArchitectTPAユーティリティを使用することです。

TPAを介したインストール
^^^^^^^^^^^^^^^^^^^^^^^

PGDクラスターがTPAを介して展開されている場合、TPAは推奨アーキテクチャに従って、PGDプロキシを自動的にインストールおよび構成します。
PGDクラスター内の他のノードにPGDプロキシをインストールする場合は、TPA構成ファイルでそのインスタンスにpgd-proxyロールをアタッチする必要があります。また、この例が示しているように、展開する前に\ ``bdr_child_group``
パラメーターを設定します。詳細については、
 :ref:`Trusted Postgres ArchitectTPAのインストール <Trusted Postgres ArchitectTPAのインストール>` を参照してください。

.. code:: yaml


   - Name: proxy-a1
     location: a
     node: 4
     role:
     - pgd-proxy
     vars:
       bdr_child_group: group_a
     volumes:
     - device_name: /dev/sdf
       volume_type: none

構成
^^^^

PGDプロキシは、プロキシオプションの取得や書き込みリーダーの詳細の取得などの内部操作を行うためにPGDデータベースに接続します。したがって、
PGDノードに接続するにはエンドポイント/dsnのリストが必要です。
PGDプロキシは、これらの構成をローカル構成ファイル\ ``pgd-proxy-config.yml``
で想定しています。次に、\ ``pgd-proxy-config.yml``
ファイルの作業例を示します。

.. code:: yaml

   log-level: debug
   cluster:
     name: cluster-name
     endpoints:
       - "host=bdr-a1 port=5432 dbname=bdrdb user=pgdproxy "
       - "host=bdr-a3 port=5432 dbname=bdrdb user=pgdproxy "
       - "host=bdr-a2 port=5432 dbname=bdrdb user=pgdproxy "
     proxy:
       name: "proxy-a1"

デフォルトでは、TPAを介して作成されたクラスターでは、
``pgd-proxy-config.yml`` は\ ``/etc/edb/pgd-proxy``
ディレクトリにあります。
PGDプロキシは、次の場所で\ ``pgd-proxy-config.yml``
を検索します。優先順位は高から低です。

1. ``/etc/edb/pgd-proxy`` デフォルト2.\ ``$HOME/.edb/pgd-proxy``

ファイルの名前を変更するか、別の場所に移動する場合は、サービスを開始するときにオプションの\ ``-f``
または\ ``--config-file``
フラグを使用して、新しい名前と場所を指定します。
 :ref:`sample service file <EDB Postgres Distributed Proxy>` を参照してください。

サンプル構成に示すように、トップレベルの構成パラメーター\ ``log-level``
を使用して、PGDプロキシサービスのログレベルを設定できます。
``log-level`` の有効な値は、\ ``debug`` 、\ ``info`` 、\ ``warn``
、および\ ``error`` です。

``cluster.endpoints`` および\ ``cluster.proxy.name``
は、構成ファイルの必須フィールドです。
PGDプロキシは、常にリストの最初のエンドポイントに接続しようとします。失敗した場合は、次のエンドポイントを試行します。以下、同様に。

PGDプロキシは、プロキシのスタートアップにのみローカル構成ファイルで指定されたエンドポイントを使用します。その後、PGDプロキシは、PGDプロキシカタログから実際のエンドポイントroute_dsnのリストを取得します。したがって、各PGDプロキシノードにノードオプション\ ``route_dsn``
を設定する必要があります。詳細については、
 :ref:`route_dsn <Routing functions>` を参照してください。

ヘルスチェックの構成
''''''''''''''''''''

PGDプロキシは、
 :ref:`HTTP(S) health check APIs <EDB Postgres Distributed Proxy>` を提供します。ヘルスチェックが必要な場合は、次の構成パラメーターをpgd-proxy構成ファイルに追加することにより、有効にできます。デフォルトでは、無効になっています。

.. code:: yaml

   cluster:
     name: cluster-name
     endpoints:
       - "host=bdr-a1 port=5432 dbname=bdrdb user=pgdproxy "
       - "host=bdr-a3 port=5432 dbname=bdrdb user=pgdproxy "
       - "host=bdr-a2 port=5432 dbname=bdrdb user=pgdproxy "
     proxy:
       name: "proxy-a1"
       endpoint: "host=proxy-a1 port=6432 dbname=bdrdb user=pgdproxy "
       http:
         enable: true
         host: "0.0.0.0"
         port: 8080
         secure: false
         cert_file: ""
         key_file: ""
         probes:
           timeout: 10s

構成\ ``cluster.proxy.http.enable: true``
を追加することにより、APIを有効にできます。有効にすると、HTTPサーバーはデフォルトポート\ ``8080``
でリッスンし、10秒の\ ``timeout`` とHTTPSサポートなし。

HTTPSを有効にするには、構成パラメーター
``cluster.proxy.http.secure: true`` を設定します。 ``true``
に設定されている場合、 ``cert_file`` および\ ``key_file``
も設定する必要があります。

``cluster.proxy.endpoint``
は、プロキシがチェックの一部として現在の書き込みリーダーに接続するために使用されるエンドポイントです。
``cluster.proxy.http.enable`` が\ ``true`` の場合、
``cluster.proxy.endpoint`` も設定する必要があります。これは、 BDRノード
 :ref:`routing_dsn <Routing functions>`  と同じにすることができます。ホストは\ ``listen_address``
、ポートは\ ``listen_port`` :ref:`proxy options <Routing functions>` 
です。必要に応じて、このエンドポイントに\ ``sslmode``
、\ ``sslrootcert`` 、\ ``user``
などの接続文字列パラメーターを追加できます。

PGDプロキシユーザー
^^^^^^^^^^^^^^^^^^^

エンドポイントで指定されたデータベースユーザーは、スーパーユーザーである必要はありません。通常、TPA環境では、
pgdproxyはOSユーザーであるだけでなく、
bdr_superuserロールを持つデータベースユーザーでもあります。

PGDプロキシサービス
^^^^^^^^^^^^^^^^^^^

PGDプロキシをsystemdサービスとして実行することをお勧めします。
``pgd-proxy``
サービスユニットファイルは、デフォルトで\ ``/etc/systemd/system/pgd-proxy.service``
にあります。次に、TPAによって作成されたサンプルサービスファイルを示します。

.. code:: text

   [Unit]
   Description=PGD Proxy

   [Service]
   Type=simple
   User=pgdproxy
   Group=pgdproxy
   Restart=on-failure
   RestartSec=1s
   ExecStart=/usr/bin/pgd-proxy -f /etc/edb/pgd-proxy/pgd-proxy-config.yml
   StandardOutput=syslog
   StandardError=syslog
   SyslogIdentifier=pgd-proxy

   [Install]
   WantedBy=multi-user.target

次のコマンドを使用して、\ ``pgd-proxy`` サービスを管理します。

.. code:: sh

   systemctl status pgd-proxy
   systemctl stop pgd-proxy
   systemctl restart pgd-proxy

手動インストール
^^^^^^^^^^^^^^^^

PGDリポジトリから入手できる\ ``.deb`` および\ ``.rpm``
パッケージを使用して、LinuxマシンにPGDプロキシを手動でインストールできます。パッケージ名は\ ``edb-pgd5-proxy``
です。例

.. code:: sh

   #  for Debian

   sudo apt-get install edb-pgd5-proxy
