Step 5 - Creating the PGD cluster#

PGDクラスターの作成#

  • 各ノードの接続文字列を作成します 。ノードごとに、PGDがレプリケーションを実行できる接続文字列を作成します。

接続文字列は、host= とホストのIPアドレスで始まるキー/値の文字列です。解決可能な名前付けホストがある場合、IPアドレスの代わりにホストの名前が使用されます。

その後にデータベースの名前が続きます。この場合、 dbname=bdrdb を使用します。 installing the software のときにbdrdb データベースが作成されたためです。

また、サーバーのポート番号をEDB Postgres Advanced Serverの場合はport=5444 として、 EDB Postgres ExtendedおよびコミュニティPostgreSQLの場合はport=5432 として接続文字列に追加することをお勧めします。

  • 最初のノードを準備します。 クラスターを作成するには、ホストのPostgresサーバーでbdrdb データベースを選択してログインします。

  • 最初のノードを作成します。 bdr.create_node を実行し、ノードに名前とその接続文字列を指定します。 他の ノードが接続できる場所。

  • 最上位グループを作成します。 bdr.create_node_group を使用してクラスターのトップレベルグループを作成し、それに単一のパラメーターを指定します。トップレベルグループの名前。

  • サブグループを作成します。 bdr.create_node_group を使用してトップレベルグループの子としてサブグループを作成し、それに2つのパラメーターを指定します。サブグループの名前と親およびトップレベルグループの名前。このプロセスは、最初のノードを初期化します。

  • 2番目のノードを追加します。

  • 2番目のノードを作成します。別の初期化されたノードのbdrdb データベースにログインします。 bdr.create_node を実行し、ノードに別の名前とその接続文字列を指定します。ここで、 他の ノードはそれに接続できます。

  • 2番目のノードをクラスターに参加させます。次に、 bdr.join_node_group を実行し、最初のノードの接続文字列とノードに参加するサブグループの名前の2つのパラメーターを渡します。

  • 3番目のノードを追加します。

  • 3番目のノードを作成します。別の初期化されたノードのbdrdb データベースにログインします。 bdr.create_node を実行し、ノードに別の名前とその接続文字列を指定します。ここで、 他の ノードはそれに接続できます。

  • 3番目のノードをクラスターに参加させます。次に、 bdr.join_node_group を実行し、最初のノードの接続文字列とノードに参加するサブグループの名前の2つのパラメーターを渡します。

実際の例#

これまでのところ、この例には次のものが含まれています。

  • 3つのホストを作成しました。

  • 各ホストにPostgresサーバーをインストールしました。

  • 各ホストにPostgres Distributedのインストール。

  • 各ホストでPGDと連携するようにPostgresサーバーを構成しました。

クラスターを作成するには、host-oneのPostgresインスタンスに、それがPGDノード-node-one-であることを指示し、そのノードにPGDグループを作成します。次に、host-2とhost-threeのPostgresインスタンスに、それらがPGDノード-ノード2およびノード-3-であり、ノード1のグループに参加する必要があることを指示します。

各ノードの接続文字列を作成する#

事前に各ノードの接続文字列を計算しておきます。次に、この3ノードの例の接続文字列を示します。

Name

Node name

Private IP

Connection string

host-one

node-one

192.168.254.166

host=host-one dbname=bdrdb port=5444

host-two

node-two

192.168.254.247

host=host-two dbname=bdrdb port=5444

host-three

node-three

192.167.254.135

host=host-three dbname=bdrdb port=5444

最初のノードの準備#

host-oneのPostgresサーバーにログインします。

ssh admin@host-one
sudo -iu enterprisedb psql bdrdb

最初のノードを作成する#

bdr.create_node ファンクションを呼び出してノードを作成し、ノード名と他のノードが接続するために使用できる接続文字列を渡します。

select bdr.create_node(node-one,host=host-one dbname=bdrdb port=5444);

最上位グループを作成する#

bdr.create_node_group ファンクションを呼び出して、PGDクラスターのトップレベルグループを作成します。単一の文字列パラメーターを渡すと、その名前でトップレベルのグループが作成されます。この例では、

pgd という名前のトップレベルグループを作成します。

select bdr.create_node_group(pgd);

サブグループを作成する#

サブグループを使用してノードを編成することは、後で構成するPGDプロキシのようなサービスが操作を調整できるため、をお勧めします。大規模なPGDインストールでは、複数のサブグループが存在する場合があります。これらのサブグループは、クラスターの地理的マッピングとローカライズされた復元力を有効にする組織グループを提供します。そのため、この例では、最初のノードのサブグループを作成して、より簡単な拡張とPGDプロキシの使用を有効にします。

bdr.create_node_group ファンクションを再度呼び出して、トップレベルグループのサブグループを作成します。サブグループ名は最初のパラメーターであり、親グループは2番目のパラメーターです。この例では、サブグループdc1

をpgd の子として作成します。

select bdr.create_node_group(dc1,pgd);

2番目のノードの追加#

host-twoのPostgresサーバーにログインします

ssh admin@host-two
sudo -iu enterprisedb psql bdrdb

2番目のノードを作成する#

bdr.create_node ファンクションを呼び出してこのノードを作成し、ノード名と他のノードが接続するために使用できる接続文字列を渡します。

select bdr.create_node(node-two,host=host-two dbname=bdrdb port=5444);

2番目のノードをクラスターに参加させます#

bdr.join_node_group を使用して、ノード2にノード1のdc1

グループに参加するように依頼できます。このファンクションは、最初のパラメーターとして既にグループ内にあるノードの接続文字列を取得し、2番目のパラメーターとしてグループ名を取得します。

select bdr.join_node_group(host=host-one dbname=bdrdb port=5444,dc1);

3番目のノードを追加します#

host-threeのPostgresサーバーにログインします。

ssh admin@host-three
sudo -iu enterprisedb psql bdrdb

3番目のノードを作成する#

bdr.create_node ファンクションを呼び出してこのノードを作成し、ノード名と他のノードが接続するために使用できる接続文字列を渡します。

select bdr.create_node(node-three,host=host-three dbname=bdrdb port=5444);

3番目のノードをクラスターに参加させます#

bdr.join_node_group を使用して、ノード3にノード1のdc1

グループに参加するように依頼できます。このファンクションは、最初のパラメーターとして既にグループ内にあるノードの接続文字列を取得し、2番目のパラメーターとしてグループ名を取得します。

select bdr.join_node_group(host=host-one dbname=bdrdb port=5444,dc1);

PGDクラスターが作成されました。