创建连接负载均衡组
为节点创建网络地址后,您可以创建网络地址的集合,以便您可以使用路由规则将它们确定为目标。这些网络地址的集合称为负载均衡组。您可以通过两种方法选择要包括在负载均衡组中的地址:
-
网络地址列表
-
一个或多个容错组或子群集的名称,加上采用 CIDR 格式的 IP 地址范围。根据地址范围可以选择 Vertica 将容错组或子群集中的哪些网络地址添加到负载均衡组中。只有属于所提供的 IP 地址范围的网络地址才会添加到负载均衡组。此筛选器可用于让负载均衡组基于构成容错组或子群集的部分节点。
注意
负载均衡组只能基于容错组或子群集,或者包含任意网络地址列表。不能混合使用这些来源。例如,如果您基于一个或多个容错组创建负载均衡组,则只能向该负载均衡组中添加额外的容错组。如果您尝试向负载均衡组中添加网络地址或子群集,Vertica 将返回错误。您可以使用 CREATE LOAD BALANCE GROUP 语句创建负载均衡组。当您的组基于地址列表时,此语句采用组名和地址列表。以下示例演示了为四个节点创建地址,然后基于这些节点创建两个组。
=> CREATE NETWORK ADDRESS addr01 ON v_vmart_node0001 WITH '10.20.110.21';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS addr02 ON v_vmart_node0002 WITH '10.20.110.22';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS addr03 on v_vmart_node0003 WITH '10.20.110.23';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS addr04 on v_vmart_node0004 WITH '10.20.110.24';
CREATE NETWORK ADDRESS
=> CREATE LOAD BALANCE GROUP group_1 WITH ADDRESS addr01, addr02;
CREATE LOAD BALANCE GROUP
=> CREATE LOAD BALANCE GROUP group_2 WITH ADDRESS addr03, addr04;
CREATE LOAD BALANCE GROUP
=> SELECT * FROM LOAD_BALANCE_GROUPS;
name | policy | filter | type | object_name
------------+------------+-----------------+-----------------------+-------------
group_1 | ROUNDROBIN | | Network Address Group | addr01
group_1 | ROUNDROBIN | | Network Address Group | addr02
group_2 | ROUNDROBIN | | Network Address Group | addr03
group_2 | ROUNDROBIN | | Network Address Group | addr04
(4 rows)
一个网络地址可以是任意多个负载均衡组的一部分。但是,每个组的每个节点只能有一个网络地址。您不能将两个属于同一节点的网络地址添加到同一负载均衡组中。
从容错组创建负载均衡组
要从一个或多个容错组创建负载均衡组,请提供:
-
负载均衡组的名称
-
一个或多个容错组的名称
-
CIDR 格式的 IP 地址筛选器,根据容错组的 IP 地址筛选要添加到负载均衡组的容错组。Vertica 会排除容错组中不属于此范围的任何网络地址。如果您希望将容错组中的所有节点都添加到负载均衡组中,请指定筛选器 0.0.0.0/0。
以下示例从容错组创建两个负载均衡组。第一个通过对所有 IP 地址使用 CIDR 表示法,包括容错组中的所有网络地址。第二个使用 IP 地址筛选器,将容错组限制在容错组中的三个节点(共四个)。
=> CREATE FAULT GROUP fault_1;
CREATE FAULT GROUP
=> ALTER FAULT GROUP fault_1 ADD NODE v_vmart_node0001;
ALTER FAULT GROUP
=> ALTER FAULT GROUP fault_1 ADD NODE v_vmart_node0002;
ALTER FAULT GROUP
=> ALTER FAULT GROUP fault_1 ADD NODE v_vmart_node0003;
ALTER FAULT GROUP
=> ALTER FAULT GROUP fault_1 ADD NODE v_vmart_node0004;
ALTER FAULT GROUP
=> SELECT node_name,node_address,node_address_family,export_address
FROM v_catalog.nodes;
node_name | node_address | node_address_family | export_address
------------------+--------------+---------------------+----------------
v_vmart_node0001 | 10.20.110.21 | ipv4 | 10.20.110.21
v_vmart_node0002 | 10.20.110.22 | ipv4 | 10.20.110.22
v_vmart_node0003 | 10.20.110.23 | ipv4 | 10.20.110.23
v_vmart_node0004 | 10.20.110.24 | ipv4 | 10.20.110.24
(4 rows)
=> CREATE LOAD BALANCE GROUP group_all WITH FAULT GROUP fault_1 FILTER
'0.0.0.0/0';
CREATE LOAD BALANCE GROUP
=> CREATE LOAD BALANCE GROUP group_some WITH FAULT GROUP fault_1 FILTER
'10.20.110.21/30';
CREATE LOAD BALANCE GROUP
=> SELECT * FROM LOAD_BALANCE_GROUPS;
name | policy | filter | type | object_name
----------------+------------+-----------------+-----------------------+-------------
group_all | ROUNDROBIN | 0.0.0.0/0 | Fault Group | fault_1
group_some | ROUNDROBIN | 10.20.110.21/30 | Fault Group | fault_1
(2 rows)
您还可以为 CREATE LOAD BALANCE GROUP 语句提供多个容错组:
=> CREATE LOAD BALANCE GROUP group_2_faults WITH FAULT GROUP
fault_2, fault_3 FILTER '0.0.0.0/0';
CREATE LOAD BALANCE GROUP
注意
如果您提供的筛选范围与容错组中节点的所有网络地址都不匹配,Vertica 会创建一个空负载均衡组。任何将连接定向到空负载均衡组的路由规则都将失败,因为并未设置用来为该组处理连接的节点。在这种情况下,客户端最初连接到的节点本身处理客户端连接。从子群集创建负载均衡组
从子群集创建负载均衡组类似于从容错组创建负载均衡组。只需在 CREATE LOAD BALANCE GROUP 语句中使用 WITH SUBCLUSTER 而不是 WITH FAULT GROUP 即可。
=> SELECT node_name,node_address,node_address_family,subcluster_name
FROM v_catalog.nodes;
node_name | node_address | node_address_family | subcluster_name
----------------------+--------------+---------------------+--------------------
v_verticadb_node0001 | 10.11.12.10 | ipv4 | load_subcluster
v_verticadb_node0002 | 10.11.12.20 | ipv4 | load_subcluster
v_verticadb_node0003 | 10.11.12.30 | ipv4 | load_subcluster
v_verticadb_node0004 | 10.11.12.40 | ipv4 | analytics_subcluster
v_verticadb_node0005 | 10.11.12.50 | ipv4 | analytics_subcluster
v_verticadb_node0006 | 10.11.12.60 | ipv4 | analytics_subcluster
(6 rows)
=> CREATE NETWORK ADDRESS node01 ON v_verticadb_node0001 WITH '10.11.12.10';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node02 ON v_verticadb_node0002 WITH '10.11.12.20';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node03 ON v_verticadb_node0003 WITH '10.11.12.30';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node04 ON v_verticadb_node0004 WITH '10.11.12.40';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node05 ON v_verticadb_node0005 WITH '10.11.12.50';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node06 ON v_verticadb_node0006 WITH '10.11.12.60';
CREATE NETWORK ADDRESS
=> CREATE LOAD BALANCE GROUP load_subcluster WITH SUBCLUSTER load_subcluster
FILTER '0.0.0.0/0';
CREATE LOAD BALANCE GROUP
=> CREATE LOAD BALANCE GROUP analytics_subcluster WITH SUBCLUSTER
analytics_subcluster FILTER '0.0.0.0/0';
CREATE LOAD BALANCE GROUP
设置组的分布策略
负载均衡组有一个策略设置确定最初联系的节点如何从组中选择目标。CREATE LOAD BALANCE GROUP 支持以下三种策略:
-
ROUNDROBIN(默认值)将在负载均衡组的可用成员之间轮转。最初联系的节点会跟踪它上次选择的节点,并选择群集中的下一个节点。
注意
群集中的每个节点都维护自己的循环指针,该指针将指示它应为每个负载均衡组选择之后的哪一个节点。因此,如果客户端连接到不同的初始节点,则可能会被重定向到同一个节点。 -
RANDOM 从组中随机选择一个可用节点。
-
NONE 禁用负载均衡。
以下示例演示了如何使用 RANDOM 分布策略创建负载均衡组。
=> CREATE LOAD BALANCE GROUP group_random WITH ADDRESS node01, node02,
node03, node04 POLICY 'RANDOM';
CREATE LOAD BALANCE GROUP
下一步
在创建负载均衡组后,必须添加负载均衡路由规则,该规则通知 Vertica 如何将传入的连接重定向到组。请参阅创建负载均衡路由规则。