17.7. 触发 Controller 节点替换
完成以下步骤,以删除旧的 Controller 节点,并将它替换为新的 Controller 节点。
流程
确定您要删除的 Controller 节点的 UUID,并将其存储在 <
NODEID&
gt; 变量中。确保将 <node_name
> 替换为您要删除的节点的名称:(undercloud)[stack@director ~]$ NODEID=$(openstack server list -f value -c ID --name <node_name>)
要识别 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'
创建以下环境文件
~/templates/remove-controller.yaml
,并包含您要删除的 Controller 节点的节点索引:parameters: ControllerRemovalPolicies: [{'resource_list': ['<node_index>']}]
输入 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 节点。
-
仅对部署命令的这个实例包含
director 会移除旧节点,创建一个新节点并更新 overcloud 堆栈。您可以使用以下命令检查 overcloud 栈的状态:
(undercloud)$ openstack stack list --nested
部署命令完成后,确认旧节点已替换为新节点:
(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 服务。