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クラスターが作成されました。