Configuring the cluster
=======================

クラスターの構成
----------------

プロセスの次のステップは、データベースとクラスターを構成することです。

これには、各ホストにログインし、 ``pgd``
コマンドを実行してデータベースユーザーとしてクラスターを作成することが含まれます。

これらの手順は、使用しているプラットフォーム、および使用しているPostgresのバージョンによって異なります。

クラスター名
------------

クラスターの名前を選択する必要があります。これは、PGD
CLIおよびデータベースでクラスターを識別するために使用される名前です。例では\ ``<cluster-name>``
と呼ばれます。指定しない場合、デフォルト名は\ ``pgd`` です。

グループ名
----------

グループの名前を選択する必要があります。これは、PGD
CLIおよびデータベースでグループを識別するために使用される名前です。例では\ ``<group-name>``
と呼ばれます。

グループ名はクラスター内で一意である必要があります。

ノード名
--------

また、各ノードの名前を選択する必要があります。これは、PGD
CLIおよびデータベースでノードを識別するために使用される名前です。例では\ ``<node-name>``
と呼ばれます。これは、ノードが実行されているマシンの名前であるホスト名とは別です。

ノード名は、グループ内およびクラスター内で一意である必要があります。

パスとユーザー
--------------

例で使用されるパスとユーザーは、使用しているPostgresのバージョン、および使用しているプラットフォームによって異なります。

Postgresバージョンを選択します

EDB Postgres Advanced Server
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Debian/Ubuntu
^^^^^^^^^^^^^

.. csv-table::
  :header: ""
  :widths: auto
  :align: left
  :class: longtable

  `enterprisedb`
  `5444`
  `/usr/lib/edb-as/$PG_VERSION/bin/`
  `/var/lib/edb-as/$PG_VERSION/main/`

.. code:: shell

   sudo -iu enterprisedb
   export PG_VERSION=<version>
   export PATH=$PATH:/usr/lib/edb-as/$PG_VERSION/bin/
   export PGDATA=/var/lib/edb-as/$PG_VERSION/main/
   export PGPORT=5444

CentOS/RHEL
^^^^^^^^^^^

.. csv-table::
  :header: ""
  :widths: auto
  :align: left
  :class: longtable

  `enterprisedb`
  `5444`
  `/usr/edb/as$PG_VERSION/bin/`
  `/var/lib/edb/as$PG_VERSION/data/`

.. code:: shell

   sudo -iu enterprisedb
   export PG_VERSION=<version>
   export PATH=$PATH:/usr/edb/as$PG_VERSION/bin/
   export PGDATA=/var/lib/edb/as$PG_VERSION/data/
   export PGPORT=5444

EDB Postgres Extended
^^^^^^^^^^^^^^^^^^^^^

.. _debianubuntu-1:

Debian/Ubuntu
^^^^^^^^^^^^^

.. csv-table::
  :header: ""
  :widths: auto
  :align: left
  :class: longtable

  `postgres`
  `5432`
  `/usr/lib/edb-pge/$PG_VERSION/bin/`
  `/var/lib/edb-pge/$PG_VERSION/main/`

.. code:: shell

   sudo -iu postgres
   export PG_VERSION=<version>
   export PATH=$PATH:/usr/lib/edb-pge/$PG_VERSION/bin/
   export PGDATA=/var/lib/edb-pge/$PG_VERSION/main/
   export PGPORT=5432

.. _centosrhel-1:

CentOS/RHEL
^^^^^^^^^^^

.. csv-table::
  :header: ""
  :widths: auto
  :align: left
  :class: longtable

  `postgres`
  `5432`
  `/usr/edb/pge$PG_VERSION/bin/`
  `/var/lib/edb-pge/$PG_VERSION/data/`

.. code:: shell

   sudo -iu postgres
   export PG_VERSION=<version>
   export PATH=$PATH:/usr/edb/pge$PG_VERSION/bin/
   export PGDATA=/var/lib/edb-pge/$PG_VERSION/data/
   export PGPORT=5432

コミュニティPostgreSQL
^^^^^^^^^^^^^^^^^^^^^^

.. csv-table::
  :header: ""
  :widths: auto
  :align: left
  :class: longtable

  `postgres`
  `5432`
  `/usr/lib/postgresql/$PG_VERSION/bin/`
  `/var/lib/postgresql/$PG_VERSION/main/`

.. code:: shell

   sudo -iu postgres
   export PG_VERSION=<version>
   export PATH=$PATH:/usr/lib/postgresql/$PG_VERSION/bin/
   export PGDATA=/var/lib/postgresql/$PG_VERSION/main/
   export PGPORT=5432

.. _centosrhel-2:

CentOS/RHEL
^^^^^^^^^^^

.. csv-table::
  :header: ""
  :widths: auto
  :align: left
  :class: longtable

  `postgres`
  `5432`
  `/usr/pgsql-$PG_VERSION/bin/`
  `/var/lib/pgsql/$PG_VERSION/data/`

.. code:: shell

   sudo -iu postgres
   export PG_VERSION=<version>
   export PATH=$PATH:/usr/pgsql-$PG_VERSION/bin/
   export PGDATA=/var/lib/pgsql/$PG_VERSION/data/
   export PGPORT=5432

各ホストで
----------

上記のスクリプト/設定からコマンドを実行して、各ホストでPostgresユーザーの環境変数とパスを設定します。これにより、
``pgd``
コマンドがPostgres実行可能ファイルとデータディレクトリを見つけられるようになります。

1. 適切なユーザーを使用して、データベースユーザーとしてログインします。

.. code:: bash

   sudo -iu <db-user>

1. Postgresバージョンの環境変数を設定します。 ``<version>`` を、\ ``17``
   など、使用している実際のバージョン番号に置き換えることを忘れないでください。

.. code:: bash

   export PG_VERSION=<version>

1. Postgres実行可能ファイルをパスに追加します。

.. code:: bash

   export PATH=$PATH:<executable-path>

1. Postgresデータディレクトリ環境変数を設定します。

.. code:: bash

   export PGDATA=<data-directory>

1. Postgresパスワード環境変数を設定します。 ``<db-password>``
   をデータベースユーザーに使用する実際のパスワードに置き換えることを忘れないでください。

.. code:: bash

   export PGPASSWORD=<db-password>

最初のホストで
^^^^^^^^^^^^^^

クラスター内の最初のホストは最初のノードでもあり、クラスターの作成を開始する場所になります。最初のホストで、次のコマンドを実行してクラスターを作成します。

.. code:: bash

   pgd node <first-node-name> setup --dsn "host=<first-host> user=<db-user> port=<db-port> dbname=<dbname>" --group-name <group-name>

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

2番目のホストで
^^^^^^^^^^^^^^^

2番目のホストで、次のコマンドを実行してクラスターを作成します。

.. code:: bash

   pgd node <second-node-name> setup --dsn "host=<second-host> user=<db-user> port=<db-port> dbname=<db-name>" --cluster-dsn "host=<first-host> user=<db-user> port=<db-port> dbname=<db-name>"

このコマンドは、2番目のホストにノードを作成し、
cluster-dsn設定を使用してクラスターに参加し、最初のホストに接続します。

.. _番目のホストで-1:

3番目のホストで
^^^^^^^^^^^^^^^

3番目のホストで、次のコマンドを実行してクラスターを作成します。

.. code:: bash

   pgd node <third-node-name> setup --dsn "host=<third-host> user=<db-user> port=<db-port> dbname=<db-name>" --cluster-dsn "host=<first-host> user=<db-user> port=<db-port> dbname=<db-name>"

このコマンドは、3番目のホストにノードを作成し、
cluster-dsn設定を使用してクラスターに参加し、最初のホストに接続します。

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

この例では、前の手順で :ref:`Configuring PGD repositories <Configuring PGD repositories>` および :ref:`Installing the database and pgd <Installing the database and pgd>` を作成したCentOS /
RHELシステム上のEDB Postgres Extended Server
17を使用してPGDクラスターを構成します。

次に、 ``node-1`` 、\ ``node-2`` 、および\ ``node-3``
と呼ばれる3つのノードを使用して\ ``pgd``
と呼ばれるクラスターを作成します。

- グループ名は\ ``group-1`` になります。ホストは\ ``host-1``
  、\ ``host-2`` 、および\ ``host-3`` です。

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

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

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

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

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

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

- Postgresのパスワードは\ ``secret`` です。

Postgresバージョン環境変数PG_VERSIONは、前の手順で\ ``17``
に設定されていると仮定し、ユーザーを切り替えるときに環境変数を保存していることに注意してください。

.. _最初のホストで-1:

最初のホストで
^^^^^^^^^^^^^^

.. code:: bash

   sudo  -iu postgres
   export PG_VERSION=17
   export PATH=$PATH:/usr/edb/pge$PG_VERSION/bin/
   export PGDATA=/var/lib/edb-pge/$PG_VERSION/data/
   export PGPASSWORD=secret
   pgd node node-1 setup --dsn "host=host-1 user=postgres port=5432 dbname=pgddb" --group-name group-1

.. _番目のホストで-2:

2番目のホストで
^^^^^^^^^^^^^^^

.. code:: bash

   sudo -iu postgres
   export PG_VERSION=17
   export PATH=$PATH:/usr/edb/pge$PG_VERSION/bin/
   export PGDATA=/var/lib/edb-pge/$PG_VERSION/data/
   export PGPASSWORD=secret
   pgd node node-2 setup --dsn "host=host-2 user=postgres port=5432 dbname=pgddb" --cluster-dsn "host=host-1 user=postgres port=5432 dbname=pgddb"

.. _番目のホストで-3:

3番目のホストで
^^^^^^^^^^^^^^^

.. code:: bash

   sudo -iu postgres
   export PG_VERSION=17
   export PATH=$PATH:/usr/edb/pge$PG_VERSION/bin/
   export PGDATA=/var/lib/edb-pge/$PG_VERSION/data/
   export PGPASSWORD=secret
   pgd node node-3 setup --dsn "host=host-3 user=postgres port=5432 dbname=pgddb" --cluster-dsn "host=host-1 user=postgres port=5432 dbname=pgddb"

次のステップは、 :ref:`Checking the cluster <Checking the cluster>`  です。
