17.7. 触发 Controller 节点替换

完成以下步骤,以删除旧的 Controller 节点,并将它替换为新的 Controller 节点。

流程

  1. 确定您要删除的 Controller 节点的 UUID,并将其存储在 < NODEID& gt; 变量中。确保将 & lt;node_name > 替换为您要删除的节点的名称:

    (undercloud)[stack@director ~]$ NODEID=$(openstack server list -f value -c ID --name <node_name>)
  2. 要识别 Heat 资源 ID,请输入以下命令:

    (undercloud)[stack@director ~]$ openstack stack resource show overcloud ControllerServers -f json -c attributes | jq --arg NODEID "$NODEID" -c '.attributes.value | keys[] as $k | if .[$k] == $NODEID then "Node index \($k) for \(.[$k])" else empty end'
  3. 创建以下环境文件 ~/templates/remove-controller.yaml,并包含您要删除的 Controller 节点的节点索引:

    parameters:
      ControllerRemovalPolicies:
        [{'resource_list': ['<node_index>']}]
  4. 输入 overcloud 部署命令,在命令中包含 remove-controller.yaml 环境文件以及所有与您环境相关的其他环境文件:

    (undercloud) $ openstack overcloud deploy --templates \
        -e /home/stack/templates/remove-controller.yaml \
        [OTHER OPTIONS]
    注意
    • 仅对部署命令的这个实例包含 -e ~/templates/remove-controller.yaml。从后续的部署操作中移除此环境文件。
    • 如果要替换 bootstrap Controller 节点并希望保留节点名称,请包含 ~/templates/bootstrap-controller.yaml。如需更多信息,请参阅 替换 bootstrap Controller 节点
  5. director 会移除旧节点,创建一个新节点并更新 overcloud 堆栈。您可以使用以下命令检查 overcloud 栈的状态:

    (undercloud)$ openstack stack list --nested
  6. 部署命令完成后,确认旧节点已替换为新节点:

    (undercloud) $ openstack server list -c Name -c Networks
    +------------------------+-----------------------+
    | Name                   | Networks              |
    +------------------------+-----------------------+
    | overcloud-compute-0    | ctlplane=192.168.0.44 |
    | overcloud-controller-0 | ctlplane=192.168.0.47 |
    | overcloud-controller-2 | ctlplane=192.168.0.46 |
    | overcloud-controller-3 | ctlplane=192.168.0.48 |
    +------------------------+-----------------------+

    新节点现在托管运行的 control plane 服务。