Standard PGD architecture
=========================

標準アーキテクチャは、コアPGD機能を使用して、マルチマスターレプリケーション構成で3つのノードを構成します。つまり、各ノードはマスターノードとして動作し、そのデータを他のノードに論理的に複製します。
PGDは、ノード上のデータ変更間の競合を処理できますが、標準アーキテクチャはPGDの統合接続マネージャーを使用して、すべての書き込みが単一のノード書き込みリーダーに送られるようにします。その特異なリーダーにデータのすべての更新を処理させることにより、競合が回避されます。変更は、クラスター内の他のノードに複製されます。

書き込みリーダーに障害が発生すると、クラスター内の残りのノードが新しい書き込みリーダーを選択し、これらのノードの接続マネージャーがフェイルオーバーして新しいリーダーに書き込みを送信します。障害が発生したノードがオンラインに戻ると、クラスターに再参加し、新しい書き込みリーダーからデータの複製を開始します。

標準アーキテクチャは、ユーザーエクスペリエンスに基づいて、展開と管理が簡単になるように作成されました。他の高可用性ソリューションとは異なり、より複雑なアーキテクチャへの移行はシンプルで簡単で、必要に応じて新しいデータグループをクラスターに追加します。

PGD標準アーキテクチャの手動展開
-------------------------------

PGD標準アーキテクチャの手動展開は、簡単なプロセスです。このアーキテクチャは、高可用性が必要で、ディザスターから復旧できる単一の場所向けに設計されています。これは、マルチマスターレプリケーション構成に3つのデータノードを持ち、1つのノードが書き込みリーダーとして機能することにより実行されます。

PGD構成
-------

インストールガイドの手順を使用して、3つのノードの各ノードにPGDをインストールします。具体的には

- :ref:`Configuring PGD repositories <Configuring PGD repositories>`  PGDパッケージのインストールを有効にします。

- :ref:`Installing the database and pgd <Installing the database and pgd>`  PGDパッケージをインストールします。

- :ref:`Configuring the cluster <Configuring the cluster>`  PGDクラスターを構成します。

実際の例
--------

この例では、 PGD Standardアーキテクチャと次のパラメーターを使用して、
EDB Postgres Extended Serverで3ノードRHELクラスターを作成します。

- 最初のノードは\ ``node1`` と呼ばれ、\ ``host-1`` にあります。

- 2番目のノードは\ ``node2`` と呼ばれ、\ ``host-2`` にあります。

- 3番目のノードは\ ``node3`` と呼ばれ、\ ``host-3`` にあります。

- クラスター名は\ ``pgd`` デフォルトの名前です。

- グループ名は\ ``group1`` です。

- Postgresのバージョンは\ ``17`` です。

- Postgresデータディレクトリは\ ``/var/lib/edb-pge/17/main/`` です。

- Postgres実行可能ファイルは\ ``/usr/edb/pge17/bin/`` にあります。

- Postgresデータベースユーザーは\ ``postgres`` です。

- Postgresデータベースポートは\ ``5432`` です。

- Postgresデータベース名は\ ``pgddb`` です。

最初のノードの場合
^^^^^^^^^^^^^^^^^^

これは、ソフトウェアをインストールする3つのノードすべての共通設定です。

.. code:: bash

   export EDB_SUBSCRIPTION_TOKEN=XXXXXXXXXXXXXX
   export EDB_SUBSCRIPTION_PLAN=enterprise
   export EDB_REPO_TYPE=rpm
   curl -1sSLf " https://downloads.enterprisedb.com/$EDB_SUBSCRIPTION_TOKEN/$EDB_SUBSCRIPTION_PLAN/setup.$EDB_REPO_TYPE.sh" | sudo -E bash
   export PG_VERSION=17
   export PGD_EDITION=essential
   export EDB_PACKAGES="edb-as$PG_VERSION-server edb-pgd6-$PGD_EDITION-epas$PG_VERSION"
   sudo dnf install -y $EDB_PACKAGES

最初のノードで、次のコマンドはクラスターとグループを作成します。また、データディレクトリを作成し、データベースを初期化します。

.. code:: bash

   sudo su - postgres
   export PATH=$PATH:/usr/edb/pge17/bin/
   pgd node node1 setup "host=host-1 user=postgres port=5432 dbname=pgddb" --pgdata /var/lib/edb-pge/17/main/ --group-name group1 --cluster-name pgd --create-group --initial-node-count 3

2番目のノードの場合
^^^^^^^^^^^^^^^^^^^

2番目のノードでソフトウェアのインストール手順を繰り返します。

次に、次のコマンドを実行してノードを初期化し、クラスターとグループに参加します。

.. code:: bash

   sudo su - postgres
   export PATH=$PATH:/usr/edb/pge17/bin/
   pgd node node2 setup "host=host-2 user=postgres port=5432 dbname=pgddb" --pgdata /var/lib/edb-pge/17/main/ --cluster-dsn "host=host-1 user=postgres port=5432 dbname=pgddb"

.. _番目のノードの場合-1:

3番目のノードの場合
^^^^^^^^^^^^^^^^^^^

3番目のノードでソフトウェアのインストール手順を繰り返します。

ノードを初期化し、クラスターとグループに参加するコマンドは、2番目のノードに似ていますが、ホスト名とノード名が異なります。

.. code:: bash

   sudo su - postgres
   export PATH=$PATH:/usr/edb/pge17/bin/
   pgd node node3 setup "host=host-3 user=postgres port=5432 dbname=pgddb" --pgdata /var/lib/edb-pge/17/main/ --cluster-dsn "host=host-1 user=postgres port=5432 dbname=pgddb"
