Setting up your geo-replication topology#

展開パターンを選択したら、次のステップはクラスタートポロジを構成することです。これには、ノード分散の計画、場所サブグループの作成、およびこれらのサブグループへのノードの割り当てが含まれます。

ノード分散の計画#

クラスターを構成する前に、ロケーション間のネットワーク遅延と帯域幅を測定します。クロスロケーションレイテンシーは、レプリケーションラグ、同期コミットパフォーマンス、およびDDL期間に直接影響を与えます。

クォーラムプランニングの場合、単一の場所が投票ノードのマジョリティを保持していないことを確認します。たとえば、5つのノードのうち3つが場所Aにあり、2つが場所Bにある場合、場所Aのみがマジョリティを保持します。ロケーションAを失うと、ロケーションBがまだ実行されている場合でも、クラスターは読み取り専用になります。

2か所の展開の場合、3番目の場所の監視ノードが標準のソリューションです。ロケーションごとに2つのデータノードと1つの監視がある場合、投票者は合計5人になるため、いずれかのロケーションが失敗する可能性があり、残りのノードがマジョリティを保持したままになります。ローカルの高可用性を実現するには、各場所に少なくとも2つのデータノードが必要です。

ロケーションサブグループの作成#

PGDは、グループ階層を使用して物理的トポロジを表します。各地理的場所はノードサブグループにマッピングされ、すべてのロケーションサブグループは、クラスター全体にまたがる単一のトップレベルグループの下にあります。場所ごとにサブグループを作成します。

SELECT bdr.create_node_group(
    node_group_name := <location_a>,
    parent_group_name := <top_group>,
    join_node_group := false
);

SELECT bdr.create_node_group(
    node_group_name := <location_b>,
    parent_group_name := <top_group>,
    join_node_group := false
);

join_node_group := false パラメーターは、現在のノードを参加させずにグループを作成します。ノードは次のステップで個別に結合されます。

<location_a> および<location_b> をロケーションの説明的な名前たとえばus_east およびeu_west などに置き換え、 <top_group> をトップレベルのPGDグループの名前に置き換えます。

サブグループが作成されたことを確認するには

SELECT node_group_name, parent_group_name
FROM bdr.node_group_summary
ORDER BY parent_group_name;

ノードのサブグループへの割り当て#

ノードをクラスターに参加させるときに、それが属するサブグループを指定します。

SELECT bdr.join_node_group(
    node_group_name := <location_a>
);

これを各ノードで実行して、その場所のサブグループに関連付けます。接続マネージャーは、サブグループメンバーシップを使用して、書き込みトラフィックを各場所の正しい書き込みリーダーにルーティングします。

サブグループが配置されたら、展開パターンのルーティングとルート優先度を構成します。 ルーティングしきい値の設定 を参照してください。