创建网络地址
网络地址为节点上的 IP 地址和端口号分配名称。在定义负载均衡组时使用这些地址。一个节点可以有多个与之关联的网络地址。例如,假设一个节点有一个 IP 地址只能从本地网络外部访问,而另一个 IP 地址只能从网络内部访问。在这种情况下,您可以使用外部 IP 地址定义一个网络地址,并使用内部地址定义另一个网络地址。然后,您可以创建两个不同的负载均衡策略,一个用于外部客户端,另一个用于内部客户端。
注意
即使您打算让连接负载均衡组基于容错组或子群集,也必须为您的节点创建网络地址。负载均衡规则只能选择为其定义了网络地址的节点。您可以使用 CREATE NETWORK ADDRESS 语句创建网络地址。此语句采用:
-
要分配给网络地址的名称
-
节点的名称
-
要与网络地址关联的节点的 IP 地址
-
节点用于接受客户端连接的端口号(可选)
注意
创建网络地址时,可以使用主机名而不是 IP 地址。但是,如果您不确定主机名解析到哪个 IP 地址,这样做可能会导致混淆。如果您的 DNS 服务器将主机名映射到多个 IP 地址,使用主机名也会导致问题。以下示例演示了如何创建三个网络地址,每个地址对应于三节点数据库中的每个节点。
=> SELECT node_name,node_address,node_address_family FROM v_catalog.nodes;
node_name | node_address | node_address_family
------------------+--------------+----------------------
v_vmart_node0001 | 10.20.110.21 | ipv4
v_vmart_node0002 | 10.20.110.22 | ipv4
v_vmart_node0003 | 10.20.110.23 | ipv4
(4 rows)
=> CREATE NETWORK ADDRESS node01 ON v_vmart_node0001 WITH '10.20.110.21';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node02 ON v_vmart_node0002 WITH '10.20.110.22';
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node03 on v_vmart_node0003 WITH '10.20.110.23';
CREATE NETWORK ADDRESS
为 IPv6 地址创建网络地址的方式相同:
=> CREATE NETWORK ADDRESS node1_ipv6 ON v_vmart_node0001 WITH '2001:0DB8:7D5F:7433::';
CREATE NETWORK ADDRESS
Vertica 不会对您在 CREATE NETWORK ADDRESS 语句中提供的 IP 地址执行任何测试。您必须测试您提供给此语句的 IP 地址,确认它们对应于正确的节点。
Vertica 不限制您提供的地址,因为它通常不知道可通过哪些网络地址访问节点。例如,您的节点可从外部网络,通过一个未配置 Vertica 使用的 IP 地址进行访问。或者,您的节点可能同时具有 IPv4 和 IPv6 地址,Vertica 只知道其中一个地址。
例如,假设上例中的 v_vmart_node0003 不能 通过 IP 地址 192.168.1.5 not 访问。您仍然可以使用该地址为该节点创建网络地址:
=> CREATE NETWORK ADDRESS node04 ON v_vmart_node0003 WITH '192.168.1.5';
CREATE NETWORK ADDRESS
如果您创建的网络组和路由规则以该地址为目标,客户端连接将连接到错误的节点,或者由于连接到不属于 Vertica 群集的主机而失败。
在网络地址中指定端口号
默认情况下,CREATE NETWORK ADDRESS 语句假设节点客户端连接的端口号是默认值 5433。有时,您可能有一个节点在不同的端口上侦听客户端连接。您可以使用 PORT 关键字为网络地址提供备用端口号。
例如,假设您的节点位于 NAT 路由器后面。在这种情况下,您可以让您的节点侦听不同的端口号,以便 NAT 路由器可以将连接路由到这些端口号。在为这些节点创建网络地址时,您需要提供 NAT 路由器的 IP 地址,以及节点正在侦听的端口号。例如:
=> CREATE NETWORK ADDRESS node1_nat ON v_vmart_node0001 WITH '192.168.10.10' PORT 5433;
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node2_nat ON v_vmart_node0002 with '192.168.10.10' PORT 5434;
CREATE NETWORK ADDRESS
=> CREATE NETWORK ADDRESS node3_nat ON v_vmart_node0003 with '192.168.10.10' PORT 5435;
CREATE NETWORK ADDRESS