Creating Raft subgroups using TPA¶
TPAexec configure コマンドは、 --enable_proxy_routing local
オプションが設定されている場合、Raftサブグループを有効にします。 TPAは、
ロケーション
という用語を使用して、物理/リージョンドメインにマッピングされるサブグループの一般的なユースケースを反映しています。構成が生成されると、指定されたロケーション名は、ロケーション名に基づいて、生成されたグループ名の下に保存されます。
TPAを使用してRaftサブグループを作成する¶
この例では、各場所に3つのデータノードを持つ2ロケーションクラスターを作成します。各場所のノードは、その場所のPGD Raftサブグループの一部です。
最上位グループの名前はpgdgroup です。
トップレベルグループには、 us_east とus_west
の2つの場所があります。これらの場所は、2つのサブグループus_east_subgroup
およびus_west_subgroup にマップされます。
各ロケーションには4つのノードがあります。3つのデータノードと1つのbarman backupノードです。 3つのデータノードは、PGDプロキシも共同ホストします。構成は次のように視覚化できます。
6 Node Cluster with 2 Raft Subgroups¶
barmanノードはサブグループに参加せず、ひいてはRaftグループにも参加しません。したがって、それらは表示されません。この図は、West Raftグループがwest_1を書き込みリーダーとして、west_2を自分のRaftリーダーとして選択したクラスターの潜在的な状態のスナップショットです。東では、 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ノードです。