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#
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_routingpgd_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ノードです。