这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

映射新 IP 地址

有时,运行的现有 Vertica 数据库群集的节点需要采用新 IP 地址。群集节点可能还需要基于不同的 IP 协议运行,例如,将协议从广播更改为点对点时。

要更改数据库群集中主机的 IP 地址,请使用 re_ip 函数更改 IP 地址并将旧地址映射到新地址:

$ admintools -t re_ip -f mapfile

mapfile 引用您创建的文件,其中包含新旧 IP 地址。

在下列任一情况下,可以使用此函数更改 IP 地址:

  • 如果您的 Vertica 数据库群集具有相同的数据和控制消息地址,请执行以下操作之一:

    • 更改所有数据库群集节点的 IP 地址。

    • 仅更改一个或部分数据库群集节点的 IP 地址。

    $ admintools -t re_ip -f mapfile
    
  • 将 Vertica 数据库群集的 IP 地址从广播模式更改为点对点(单播)模式:

    $ admintools -t re_ip -d dbname -T
    
  • 将 Vertica 数据库群集的 IP 地址从点对点(单播)模式更改为广播模式:

    $ admintools -t re_ip -d dbname -U
    
  • 更改数据库群集的控制 IP 地址。在这种情况下,映射文件必须包含控制消息 IP 地址和相关的广播地址。

    $ admintools -t re_ip -f mapfile
    
  • 仅更改一个数据库的 IP 地址,而不更改 admintools 配置。请参阅仅映射数据库上的 IP 地址

有关上述命令中所用选项的详细信息,请参阅Re-IP 命令行选项

更改 IP 地址和导出 IP 地址

默认情况下,节点 IP 地址和导出 IP 地址配置为相同的 IP 地址。导出地址是网络上可以访问其他 DBMS 系统的节点的 IP 地址。使用导出地址可以从 DBMS 系统导入和导出数据。您可以使用此处的说明手动更改导出地址。

如果更改导出地址并运行 re-ip 命令,则导出地址保持不变。

示例

运行以下命令:

=> SELECT node_name, node_address, export_address FROM nodes;
    node_name      | node_address    | export_address
------------------------------------------------------
v_VMartDB_node0001 | 192.168.100.101 | 192.168.100.101
v_VMartDB_node0002 | 192.168.100.102 | 192.168.100.101
v_VMartDB_node0003 | 192.168.100.103 | 192.168.100.101
v_VMartDB_node0004 | 192.168.100.104 | 192.168.100.101
(4 rows)

在上面的示例中,export_address 是默认值。在这种情况下,当您运行 re-ip 命令时,export_address 会更改为新的 node_address。

如果您手动将导出地址更改为此处描述的地址,可能会出现以下情况:

=> SELECT node_name, node_address, export_address FROM nodes;
    node_name      | node_address    | export_address
------------------------------------------------------
v_VMartDB_node0001 | 192.168.100.101 | 10.10.10.1
v_VMartDB_node0002 | 192.168.100.102 | 10.10.10.2
v_VMartDB_node0003 | 192.168.100.103 | 10.10.10.3
v_VMartDB_node0004 | 192.168.100.104 | 10.10.10.4
(4 rows)

在这种情况下,当您运行 re-ip 命令时,export_address 不会发生更改。

查找 IP 地址

主机和节点的 IP 地址存储在 opt/vertica/config/admintools.conf 中:

[Cluster]
hosts = 203.0.113.111, 203.0.113.112, 203.0.113.113

[Nodes]
node0001 = 203.0.113.111/home/dbadmin,/home/dbadmin
node0002 = 203.0.113.112/home/dbadmin,/home/dbadmin
node0003 = 203.0.113.113/home/dbadmin,/home/dbadmin

还可以使用以下命令显示 IP 地址列表:

$ admintools -t list_allnodes
Node             | Host          | State | Version        | DB
-----------------+---------------+-------+----------------+-----------
v_vmart_node0001 | 203.0.113.111 | UP    | vertica-10.1.1 | VMart
v_vmart_node0002 | 203.0.113.112 | UP    | vertica-10.1.1 | VMart
v_vmart_node0003 | 203.0.113.113 | UP    | vertica-10.1.1 | VMart

1 - 使用映射文件更改 IP 地址

映射新 IP 地址包括:

  • 创建将旧 IP 地址映射到新 IP 地址的映射文件。

  • 使用映射文件更新配置文件和数据库编录。

如果使用控制消息在主机之间进行通信,您可能还需要使用新的 controlAddress 和 controlBroadcast IP 地址更新 IP 地址。

创建映射文件

按如下方式创建映射文件:

  1. 获取新 IP 地址并将它们保存在一个文本文件中。

  2. 获取旧 IP 地址,使用 list_allnodes:

    $ admintools -t list_allnodes
    Node             | Host          | State | Version        | DB
    -----------------+---------------+-------+----------------+-----------
    v_vmart_node0001 | 192.0.2.254   | UP    | vertica-10.1.1 | VMart
    v_vmart_node0002 | 192.0.2.255   | UP    | vertica-10.1.1 | VMart
    v_vmart_node0003 | 192.0.2.256   | UP    | vertica-10.1.1 | VMart
    
  3. 按以下格式将 Host 列的内容复制到新 IP 地址所保存到的文本文件中:

    oldIPaddress newIPaddress
    

    例如:

    192.0.2.254 198.51.100.255
    192.0.2.255 198.51.100.256
    192.0.2.256 198.51.100.257
    
  4. 使用该文本文件创建可用于执行下列任务之一的映射文件:

将 IP 地址从旧 IP 地址更改为新 IP 地址

  1. 创建采用如下格式的映射文件:

    oldIPaddress newIPaddress[, controlAddress, controlBroadcast]
    

    例如:

    192.0.2.254 198.51.100.255, 198.51.100.255, 203.0.113.255
    192.0.2.255 198.51.100.256, 198.51.100.256, 203.0.113.255
    192.0.2.256 198.51.100.257, 198.51.100.257, 203.0.113.255
    

    controlAddresscontrolBroadcast 是可选项。如果省略:

    • controlAddress 将默认为 newIPaddress。

    • controlBroadcast 将默认为 newIPaddress 的广播 IP 地址的主机。

  2. 按如下方式运行 re_ip

    $ admintools -t re_ip -f mapfile
    

将 IP 地址从旧 IP 地址更改为新 IP 地址并更改控制消息模式

  1. 创建采用如下格式的映射文件:

    oldIPaddress newIPaddress, controlAddress, controlBroadcast
    

    例如:

    192.0.2.254 198.51.100.255, 203.0.113.255, 203.0.113.258
    192.0.2.255 198.51.100.256, 203.0.113.256, 203.0.113.258
    192.0.2.256 198.51.100.257, 203.0.113.257, 203.0.113.258
    
  2. 运行 re_ip 并按如下方式更改控制消息传递模式:

    • 将控制消息传递模式更改为点对点:

      $ admintools -t re_ip -d db name -T
      
    • 将控制消息传递模式更改为广播:

      $ admintools -t re_ip -d db name -U
      

      当您使用 -U 选项时,嵌入式消息子系统基于 controlAddresscontrolBroadcast IP 运行。

仅更改数据库的节点控制 IP 地址

  1. 创建采用如下格式的映射文件:

    nodeName nodeIPaddress, controlAddress, controlBroadcast
    

    例如:

    v_vmart_node0001 192.0.2.254, 203.0.113.255, 203.0.113.258
    v_vmart_node0002 192.0.2.255, 203.0.113.256, 203.0.113.258
    v_vmart_node0003 192.0.2.256, 203.0.113.257, 203.0.113.258
    
  2. 按如下方式运行 re_ip

    $ admintools -t re_ip -f mapfile -O -d database
    

有关详细信息,请参阅下面的映射数据库上的 IP 地址

更改 IP 地址

创建映射文件后,可以更改新 IP 地址。更改 IP 地址过程会自动备份 admintools.conf,以便在必要时恢复原始设置。

  1. 停止数据库。

  2. 运行 re-ip 以将旧 IP 地址映射到新 IP 地址:

    $ admintools -t re_ip -f mapfile
    

    如果出现以下情况,则会出现警告:

    • 任何 IP 地址的格式不正确

    • 文件中的旧 IP 地址或新 IP 地址重复 — 例如,192.0.2.256 在旧 IP 地址集中出现了两次。

    如果语法正确,则在开始映射时,re_ip 将执行以下任务:

    • 对映射文件中列出的 IP 地址进行重新映射。

    • 除非使用 -i 选项,否则会提示您确认对数据库的更新。

    • 使用新 IP 地址更新要求的本地配置文件。

    • 将更新后的配置文件分发到使用新 IP 地址的主机。

    使用以下提示跟踪这些步骤:

    Parsing mapfile...
    New settings for Host 192.0.2.254 are:
    
    address: 198.51.100.255
    
    New settings for Host 192.0.2.255 are:
    
    address: 198.51.100.256
    
    New settings for Host 192.0.2.254 are:
    
    address: 198.51.100.257
    
    The following databases would be affected by this tool: Vmart
    
    Checking DB status ...
    Enter "yes" to write new settings or "no" to exit > yes
    Backing up local admintools.conf ...
    Writing new settings to local admintools.conf ...
    
    Writing new settings to the catalogs of database Vmart ...
    The change was applied to all nodes.
    Success. Change committed on a quorum of nodes.
    
    Initiating admintools.conf distribution ...
    Success. Local admintools.conf sent to all hosts in the cluster.
    
  3. 重新启动数据库。

映射数据库上的 IP 地址

您只能映射数据库的 IP 地址。此任务涉及将数据库中的节点名称映射到新 IP 地址。这对于错误恢复很有用,因为 admintools.conf 不会更新。Vertica 仅更新 spread.conf 和包含更改的编录。

还可以仅映射数据库上的 IP 地址,以便在单个数据库上设置 controlAddress 和 controlBroadcast。此任务允许同一主机上的节点拥有不同的数据和 controlAddress。

  1. 停止数据库。

  2. 创建具有如下格式的映射文件:

    nodeName IPaddress, controlAddres, controlBroadcast
    

    例如:

    vertica_node001 192.0.2.254, 203.0.113.255, 203.0.113.258
    vertica_node002 192.0.2.255, 203.0.113.256, 203.0.113.258
    vertica_node003 192.0.2.256, 203.0.113.257, 203.0.113.258
    
  3. 运行以下命令以映射新 IP 地址:

    $ admintools -t re_ip -f mapfile -O -d database
    
  4. 重新启动数据库。

2 - Re-IP 命令行选项

re_ip 支持以下选项:

-h \--help
显示 re_ip 的联机帮助。
-f mapfile \--file=mapfile
映射文本文件的名称。文件内容取决于 re-IP 操作的类型。请参阅。
-O \--dba-only
用于进行错误恢复,更新和替换数据库群集编录和控制消息传递系统上的数据。如果映射文本文件失败,Vertica 会在您重新运行该命令时自动重新创建映射文本文件。映射文本文件的格式为:
NodeName AssociatedNodeIPAddress, new ControlAddress, new ControlBroadcast

NodeName 和 AssociatedNodeIPAddress 必须与 admintools.conf 中相同。

此选项一次只更新一个数据库,因此它需要使用 -d 选项:

$ admintools -t re_ip -f mapfile -O -d database
-i \--noprompts
指定系统在执行更改 IP 地址操作之前不提示验证新设置。默认情况下,提示功能处于打开状态。
-T \--point-to-point
将控制消息传递设置为点对点(单播)协议。此选项一次只更新一个数据库,因此它需要使用 -d 选项:此选项不需要映射文本文件。
-U \--broadcast
将控制消息传递设置为广播协议。此选项一次只更新一个数据库,因此必须使用 -d 选项:对于此选项,不需要映射文本文件。
-d database name \--database=database name
数据库名称,对于以下 re-IP 选项是必需项:
  • -O

  • -T

  • -U

3 - 重新启动具有新主机 IP 的节点

仅限 Kubernetes

Kubernetes 上 Eon 模式数据库的节点 IP 地址偶尔必定会更新 — 例如,pod 失败、添加到群集中或进行重新调度。发生这种情况时,必须使用受影响节点的新 IP 地址更新 Vertica 编录并重新启动节点。

Vertica 的 restart_node 工具通过其 --new-host-ips 选项(该选项允许您更改在 Kubernetes 上运行的 Eon 模式数据库的节点 IP 地址)满足这些要求,并重新启动已更新的节点。与在其他(非 Kubernetes)数据库上重新映射节点 IP 地址不同,您可以在正运行的数据库中的各个节点上执行此任务:

admintools -t restart_node \
  {-d db-name |--database=db-name} [-p password | --password=password] \
  {{-s nodes-list | --hosts=nodes-list} --new-host-ips=ip-address-list}
  • nodes-list 是要重新启动的节点的逗号分隔列表。列表中的所有节点都必须处于关闭状态,否则 admintools 会返回错误。

  • ip-address-list 是分配给指定节点的新 IP 地址或主机名的逗号分隔列表。

以下要求适用于 nodes-listip-address-list

  • 节点主机数和 IP 地址或主机名必须相同。

  • 列表不得包含任何嵌入空格。

例如,可以使用新 IP 地址重新启动节点 v_k8s_node0003

$ admintools -t list_allnodes
  Node           | Host       | State    | Version        | DB
 ----------------+------------+----------+----------------+-----
  v_k8s_node0001 | 172.28.1.4 | UP       | vertica-10.1.1 | K8s
  v_k8s_node0002 | 172.28.1.5 | UP       | vertica-10.1.1 | K8s
  v_k8s_node0003 | 172.28.1.6 | DOWN     | vertica-10.1.1 | K8s

$ admintools -t restart_node -s v_k8s_node0003 --new-host-ips 172.28.1.7 -d K8s
 Info: no password specified, using none
*** Updating IP addresses for nodes of database K8s ***
        Start update IP addresses for nodes
         Updating node IP addresses
         Generating new configuration information and reloading spread
*** Restarting nodes for database K8s ***
         Restarting host [172.28.1.7] with catalog [v_k8s_node0003_catalog]
         Issuing multi-node restart
         Starting nodes:
                 v_k8s_node0003 (172.28.1.7)
         Starting Vertica on all nodes. Please wait, databases with a large catalog may take a while to initialize.
         Node Status: v_k8s_node0003: (DOWN)
         Node Status: v_k8s_node0003: (DOWN)
         Node Status: v_k8s_node0003: (DOWN)
         Node Status: v_k8s_node0003: (DOWN)
         Node Status: v_k8s_node0003: (RECOVERING)
         Node Status: v_k8s_node0003: (UP)
$ admintools -t list_allnodes
  Node           | Host       | State | Version        | DB
 ----------------+------------+-------+----------------+-----
  v_k8s_node0001 | 172.28.1.4 | UP    | vertica-10.1.1 | K8s
  v_k8s_node0002 | 172.28.1.5 | UP    | vertica-10.1.1 | K8s
  v_k8s_node0003 | 172.28.1.7 | UP    | vertica-10.1.1 | K8s