Deploying EDB Postgres Distributed using Trusted Postgres Architect
===================================================================

自己管理設定でEDB Postgres分散を展開する標準の方法は、EDBの展開ツール
`Trusted Postgres
Architect </tpa/latest/>`__\ TPAを使用することです。これは、セルフホストとクラウドEC2内の両方の物理マシンと仮想マシンに適用されます。

..  Note Get started with PGD quickly ::
   できるだけ早くローカル展開を実験したい場合は、無料トライアルアカウントと :ref:`Deploying an EDB Postgres Distributed example cluster on Docker <Deploying an EDB Postgres Distributed example cluster on Docker>` を使用して、DockerでPGD 5 Always-Onクラスターを構成、プロビジョニング、および展開できます。クラウドへの展開が目的の場合は、同じ無料トライアルアカウントと :ref:`Deploying and EDB Postgres Distributed example cluster on AWS <Deploying an EDB Postgres Distributed example cluster on AWS>` を使用して、自分のAmazonアカウントでPGD 5クラスターを取得します。

無料トライアルアカウントと :ref:`Deploying EDB Postgres Distributed using Trusted Postgres Architect <Deploying EDB Postgres Distributed using Trusted Postgres Architect>` TPA から :ref:`deploy directly to your own bare metal servers <Deploying EDB Postgres Distributed using Trusted Postgres Architect>` 
を使用することもできます。

前提条件TPAのインストール
-------------------------

TPAを使用してPGDを展開する前に、TPAをインストールする必要があります。続行する前に、 :ref:`installation instructions in the Trusted Postgres Architect documentation <Deploying EDB Postgres Distributed using Trusted Postgres Architect>` に従ってください。

構成
----

``tpaexec configure``
コマンドは、選択したオプションに基づいて、クラスターを説明する単純なYAML構成ファイルを生成します。構成はすぐに使用できるようになっており、ニーズに合わせて変更できます。構成ファイルの編集は、クラスターの作成前と後の両方で、クラスターの構成を変更する通常の方法です。

構文は次のとおりです。

::

   tpaexec configure <cluster_dir> --architecture <architecture_name> [options]

使用可能な構成オプションには次のものが含まれます。

.. csv-table::
  :header: Flags,Description
  :widths: 10,30
  :align: left
  :class: longtable

  `--architecture`,必須。 EDB Postgres分散展開の場合は`PGD-Always-ON`に設定します。
  `–-postgresql <version>` 　 or 　 `--edb-postgres-advanced <version>` 　 or 　 `--edb-postgres-extended <version>`,必須。使用するPostgresのディストリビューションとバージョンを指定します。詳細については、  :ref:`PGD/TPA upgrades <Deploying EDB Postgres Distributed using Trusted Postgres Architect>` を参照してください。
  `--redwood` or `--no-redwood`,`--edb-postgres-advanced`フラグが存在する場合に必要です。 Oracleデータベース互換性機能が必要かどうかを指定します。
  `--location-names l1 l2 l3`,必須。 PGDを展開する場所の名前を指定します。
  `--data-nodes-per-location N`,ロケーションごとのデータノードの数を指定します。デフォルト3です。
  `--add-witness-node-per-location`,ロケーションごとのデータノードが偶数の場合、監視ノードを追加してローカルコンセンサスを可能にします。 2つのデータノードの場所でデフォルトで有効になっています。
  `--add-proxy-nodes-per-location`,PGDプロキシをデータノードから分離するかどうか、および構成する数。デフォルトでは、データノードごとに1つのプロキシが構成および共同ホストされます。
  `--pgd-proxy-routing globalIlocal`,PGDプロキシルーティングがグローバルまたはローカルロケーションごとに処理されるかどうか。
  `--add-witness-only-location loc`,クラスター場所の1つを監視専用として指定しますその場所にはデータノードが存在しません。
  `--enable-camo`,各ロケーションにCAMOペアを設定します。ロケーションごとに2つのデータノードでのみ動作します。

 :ref:`PGD-Always-ON <Deploying EDB Postgres Distributed using Trusted Postgres Architect>` のTPAドキュメントには、より多くの構成オプションがリストされています。

例

::

   [tpa]$ tpaexec configure ~/clusters/speedy \
            --architecture PGD-Always-ON \
            --platform aws \
            --edb-postgres-advanced 15 \
            --redwood \
            --location-names eu-west-1 eu-north-1 eu-central-1 \
            --data-nodes-per-location 3 \
            --pgd-proxy-routing global

最初の引数は、クラスターディレクトリたとえば、\ ``speedy``
または\ ``~/clusters/speedy``
である必要があります。すべてのクラスターは、\ ``~/clusters``
などの共通のディレクトリに保持することをお勧めします。アーキテクチャを選択するには、次の引数が\ ``--architecture``
であり、その後にオプションが続く必要があります。

このコマンドは、 ``~/clusters/speedy``
という名前のディレクトリを作成し、
PGD-Always-ONアーキテクチャのレイアウトに従っている\ ``config.yml``
という名前の構成ファイルを生成します。
``tpaexec configure --architecture PGD-Always-ON --help``
コマンドを使用して、このアーキテクチャの構成オプションでサポートされている値を確認できます。

この例では、オプションは次を選択します。

-  AWS展開 ``--platform aws``

-  EDB Postgres Advanced
   Serverバージョン15およびOracle互換性\ ``--edb-postgres-advanced 15``
   および\ ``--redwood``

-  3か所 ``--location-names eu-west-1 eu-north-1 eu-central-1``

-  各ロケーションに3つのデータノード ``--data-nodes-per-location 3``

-  グローバル ``--pgd-proxy-routing global``
   のプロキシルーティングポリシー

一般的な構成オプション
^^^^^^^^^^^^^^^^^^^^^^

その他の構成オプションには次のものが含まれます。

所有者
^^^^^^

すべてのクラスターは、プロビジョニングされたリソースの責任者まで直接追跡できる必要があります。

デフォルトでは、クラスターは\ ``tpaexec provision``
を実行しているユーザーのログイン名が所有するものとしてタグ付けされます。この名前が個人を識別しない場合たとえば、
``postgres`` 、\ ``ec2-user`` 、 ``--owner SomeId``
を指定して識別可能な所有者を設定する必要があります。

イニシャル、「名、姓」、またはあなたを一意に識別するテキストを使用できます。

プラットフォームオプション
^^^^^^^^^^^^^^^^^^^^^^^^^^

``--platform`` のデフォルト値は\ ``aws``
であり、これは、PGD-Always-ONアーキテクチャでサポートされているプラットフォームです。

``--region``
を指定して、アクセスがあり、必要な数のインスタンスを作成できる既存のAWSリージョンを指定します。デフォルトのリージョンはeu-west-1です。

AWSの有効なインスタンスタイプで\ ``--instance-type``
を指定します。デフォルトはt3.microです。

サブネットの選択
^^^^^^^^^^^^^^^^

デフォルトでは、各クラスターには、10.33/16の下のランダムな/28サブネットが割り当てられます。ただし、アーキテクチャによっては、1つ以上のサブネットが存在し、各サブネットは/24から/29の間の任意の場所にあります。

特定のサブネットを使用するには、 ``--subnet`` を指定します
``--subnet 192.0.2.128/27`` など

ディスク領域
^^^^^^^^^^^^

ルートボリュームのサイズをGB単位で設定するには、 ``--root-volume-size``
を指定します、例、 ``--root-volume-size 64``
。デフォルトは16GBです。インスタンスの作成に使用されるイメージによっては、ルートボリュームの最小サイズが存在する場合があります。

個別のPostgresおよびBarmanボリュームをサポートするアーキテクチャの場合

-  ``--postgres-volume-size``
   を指定して、PostgresボリュームのサイズをGB単位で設定します。デフォルトは16GBです。

-  ``--barman-volume-size`` を指定して、
   BarmanボリュームのサイズをGB単位で設定します。デフォルトは32GBです。

ディストリビューション
^^^^^^^^^^^^^^^^^^^^^^

``--os`` または\ ``--distribution``
を指定して、クラスターのインスタンスで使用するOSを指定します。値は大文字と小文字が区別されます。

選択したプラットフォームにより、使用可能なディストリビューションとデフォルトで使用されるディストリビューションが決まります。詳細については、
``tpaexec info platforms/<platformname>`` を参照してください。

通常、 ``Debian`` 、\ ``RedHat`` 、および\ ``Ubuntu``
を使用して、Postgresおよびその他のソフトウェアがプリインストールされているTPAイメージを選択できます展開時間を削減します。代わりにストック分布画像を使用するには、値に\ ``-minimal``
を追加しますたとえば、\ ``--distribution Debian-minimal`` 。

リポジトリ
^^^^^^^^^^

TPAを使用してPDG 5以降を展開する場合、TPAはEDB Repos
2.0からリポジトリを選択します。すべてのソフトウェアはこれらのリポジトリから取得しています。

 `EDB Repos 2.0 <https://www.enterprisedb.com/repos/>`_ を使用するには、
tpaexecを実行する前に\ ``export EDB_SUBSCRIPTION_TOKEN=xxx``
を使用する必要があります。 `the web
interface <https://www.enterprisedb.com/repos-downloads>`__\ からサブスクリプショントークンを取得できます。

オプションで、 ``--edb-repositories repository …``
を使用して、各インスタンスにインストールするデフォルトのリポジトリに加えて、EDBリポジトリを指定します。

ソフトウェアバージョン
^^^^^^^^^^^^^^^^^^^^^^

デフォルトでは、TPAはPostgresの最新メジャーバージョンを使用します。
``--postgres-version``
を指定して以前にサポートされているメジャーバージョンをインストールするか、
 :ref:`構成 <構成>` で説明しているフラグのいずれかを使用してバージョンとディストリビューションの両方を指定します。

デフォルトでは、TPAはすべてのパッケージの最新バージョンをインストールします。これは、通常、望ましい動作です。ただし、一部のテストシナリオでは、特定のパッケージバージョンを選択する必要がある場合があります。例

::

   - -postgres-package-version 10.4-2.pgdg90+1
   - -repmgr-package-version 4.0.5-1.pgdg90+1
   - -barman-package-version 2.4-1.pgdg90+1
   - -pglogical-package-version 2.2.0*
   - -bdr-package-version 3.0.2*
   - -pgbouncer-package-version 1.8*

さらにパッケージをインストールするには、 ``--extra-packages``
または\ ``--extra-postgres-packages``
を指定します。前者は、システムパッケージとともにインストールするパッケージをリストします。後者は、Postgresパッケージとともに後でインストールするパッケージをリストしています。前者のリストでPostgresに依存するパッケージを記載すると、Postgresがまだインストールされていないため、インストールは失敗します。引数は変更せずにインストールのためにパッケージマネージャーに渡されます。

``--extra-optional-packages`` オプションは\ ``--extra-packages``
と同様に動作しますが、名前付けたパッケージをインストールできない場合、これはエラーではありません。

ホスト名
^^^^^^^^

デフォルトでは、\ ``tpaexec configure``
は、数十の名前の事前承認リストから必要な数のホスト名をランダムに選択します。これは、ほとんどのクラスターに十分です。

``--hostnames-from``
を指定して、提供されたリストで使用可能なより多くの名前が必要な場合など、別のリストから名前を選択します。ファイルには、1行に1つのホスト名を含める必要があります。

``--hostnames-pattern``
を指定して、ホスト名をegrep-syntaxパターンに一致するものに制限します。これを行う場合、パターンが有効なホスト名[a-zA-Z0-9-]のみと一致し、十分な数のホスト名を検出することを確認する必要があります。

ロケーション
^^^^^^^^^^^^

デフォルトでは、\ ``tpaexec configure``
は、選択したアーキテクチャが使用する場所にfirst、secondなどの名前を使用します。

``--location-names``
を指定して、各場所にもっと意味のある名前を提供します。

プロビジョニング
----------------

``tpaexec provision``
コマンドは、クラスターに必要なインスタンスとその他のリソースを作成します。プロセスの詳細は、クラスターの構成中に選択したアーキテクチャPGD-Always-ONなどとプラットフォームAWSなどによって異なります。

たとえば、必要な特権を持つAWSアクセスが与えられると、TPAはEC2インスタンス、VPC、サブネット、ルーティングテーブル、インターネットゲートウェイ、セキュリティグループ、EBSボリューム、Elastic
IPなどをプロビジョニングします。

``bare``
プラットフォームを選択し、接続の詳細を提供することにより、既存のサーバーをプロビジョニングすることもできます。これらはベアメタルサーバーであるか、クラウドプラットフォームで別途プロビジョニングされたサーバーであるかにかかわらず、TPAによって作成されたかのように使用できます。

単一のプラットフォームに制限されません。必要に応じて、クラスターを複数のリージョンのいくつかのAWSインスタンスと一部のオンプレミスサーバーまたは他のデータセンターのサーバーに分散できます。

プロビジョニングステージの最後に、基本的なオペレーティングシステムがインストールされた必要な数のインスタンスができます。TPAは、SSHルートにsudoを使用してアクセスできます。

Deploy
------

``tpaexec deploy``
コマンドは、プロビジョニングされたサーバーにPostgresおよびその他のソフトウェアをインストールおよび構成します。
TPAはサーバーを作成できますが、SSHとsudoアクセスが利用できる限り、誰が作成したかは関係ありません。これには、レプリケーション、バックアップなどの設定が含まれます。

展開ステージの最後に、 EDB Postgres Distributedが稼働しています。

テスト
------

``tpaexec test``
コマンドは、展開されたクラスターに対してさまざまなアーキテクチャとプラットフォーム固有のテストを実行して、予想通りに動作することを確認します。

テスト段階の最後に、完全に機能するクラスターが完成します。

詳細については、 :ref:`Deploying EDB Postgres Distributed using Trusted Postgres Architect <Deploying EDB Postgres Distributed using Trusted Postgres Architect>` を参照してください。
