Creating Raft subgroups using TPA#

--enable_proxy_routing local オプションが設定されている場合、 TPAexec configure コマンドはRaftサブグループを有効にします。 TPAは ロケーション という用語を使用して、物理/地域ドメインにマッピングするサブグループの一般的なユースケースを反映しています。構成が生成されると、指定されたロケーション名は、ロケーション名に基づいて、生成されたグループ名の下に保存されます。

TPAを使用してRaftサブグループを作成する#

この例では、各場所に3つのデータノードを持つ2つの場所のクラスターを作成します。各ロケーションのノードは、ロケーションのPGD Raftサブグループの一部です。

トップレベルグループの名前はpgdgroup です。

トップレベルグループには、us_east およびus_west の2つの場所があります。これらの場所は、2つのサブグループus_east_subgroup およびus_west_subgroup にマッピングされます。

各ロケーションには4つのノードがあります。3つのデータノードと1つのバーマンバックアップノード。 3つのデータノードは、PGDプロキシも共同ホストします。構成は次のように視覚化できます。

6 Node Cluster with 2 Raft Subgroups

6 Node Cluster with 2 Raft Subgroups#

barmanノードはサブグループ、ひいてはRaftグループに参加しません。したがって、それらは表示されません。この図は、West Raftグループが書き込みリーダーとしてwest_1を選択し、west_2を独自のRaftリーダーとして選択したクラスターの潜在的な状態のスナップショットです。 Eastでは、 east_1が書き込みリーダーであり、east_3がRaftリーダーです。クラスター全体は、トップレベルのRaftグループ内に含まれます。そこで、west_3は現在Raftのリーダーです。

この構成を作成するには、次を実行します。

tpaexec configure pgdgroup --architecture PGD-Always-ON --location-names us_east us_west --data-nodes-per-location 3 --epas 15 --no-redwood --enable_proxy_routing local --hostnames-from hostnames.txt

hostnames.txt には以下が含まれます。

east1
east2
east3
eastbarman
west1
west2
west3
westbarman

構成ファイル#

生成されたconfig.yml ファイルには、トップレベルグループpgdgroup と2つのサブグループus_east_subgroup およびus_west_subgroup を含むbdr_node_groups セクションがあります。これらのサブグループには、ロケーションセットus_east およびus_west と、trueに設定されている他の2つのオプションがあります。

  • enable_raft 、サブグループ内のサブグループRaftをアクティブにする

  • enable_proxy_routing pgd_proxyルーターがトラフィックをサブグループの書き込みリーダーにルーティングできるようにします

次に、サンプルのtpaexecコマンドによって生成された例を示します。

cluster_vars:
  apt_repository_list: []
  bdr_database: bdrdb
  bdr_node_group: pgdgroup
  bdr_node_groups:
  - name: pgdgroup
  - name: us_east_subgroup
    options:
      enable_proxy_routing: true
      enable_raft: true
      location: us_east
    parent_group_name: pgdgroup
  - name: us_west_subgroup
    options:
      enable_proxy_routing: true
      enable_raft: true
      location: us_west
    parent_group_name: pgdgroup
  bdr_version: 5

すべてのノードインスタンスには、インスタンスリストのエントリがあります。そのエントリでは、 bdr_child_group が変数セクションに表示され、ノードが属するサブグループに設定されます。次に、サンプルのtpaexecコマンドによって生成された例を示します。

instances:

- Name: east1
  backup: eastbarman
  location: us_east
  node: 1
  role:
  - bdr
  - pgd-proxy
  vars:
    bdr_child_group: us_east_subgroup
    bdr_node_options:
      route_priority: 100

- Name: east2
  location: us_east
  node: 2
  role:
  - bdr
  - pgd-proxy
  vars:
    bdr_child_group: us_east_subgroup
    bdr_node_options:
      route_priority: 100

- Name: east3
  location: us_east
  node: 3
  role:
  - bdr
  - pgd-proxy
  vars:
    bdr_child_group: us_east_subgroup
    bdr_node_options:
      route_priority: 100

- Name: eastbarman
  location: us_east
  node: 4
  role:
  - barman

bdr_child_group 設定がないこの場所の1つのノードは、Raftの意思決定プロセスに参加しないため、barmanノードです。