16.3. 删除 Compute 节点
在某些情况下,您可能需要从 overcloud 中删除计算节点。例如,需要替换有问题的计算节点。
在从 overcloud 中删除计算节点前,先将该节点上的工作负载迁移到其他计算节点。有关更多信息,请参见 第 13 章 在 Compute 节点之间迁移虚拟机。
先决条件
-
放置服务软件包
python3-OSC-placement
已安装在 undercloud 上。
步骤
查找 overcloud 配置:
source ~/stack/overcloudrc
Copy to clipboardCopied$ source ~/stack/overcloudrc
禁用 overcloud 中传出节点上的 Compute 服务,以防止节点调度新的实例:
(overcloud) $ openstack compute service list (overcloud) $ openstack compute service set <hostname> nova-compute --disable
Copy to clipboardCopied(overcloud) $ openstack compute service list (overcloud) $ openstack compute service set <hostname> nova-compute --disable
提示使用
--disable-reason
选项添加有关为何要禁用该服务的简短说明。如果您打算稍后重新部署 Compute 服务,则该说明很有用。查找 undercloud 配置:
(overcloud) $ source ~/stack/stackrc
Copy to clipboardCopied(overcloud) $ source ~/stack/stackrc
确定 overcloud 堆栈的 UUID:
(undercloud) $ openstack stack list
Copy to clipboardCopied(undercloud) $ openstack stack list
找到要被删除的节点的 UUID:
(undercloud) $ openstack server list
Copy to clipboardCopied(undercloud) $ openstack server list
从 overcloud 堆栈中删除节点,并相应地更新计划:
(undercloud) $ openstack overcloud node delete --stack <stack_uuid> [node1_uuid] [node2_uuid] [node3_uuid]
Copy to clipboardCopied(undercloud) $ openstack overcloud node delete --stack <stack_uuid> [node1_uuid] [node2_uuid] [node3_uuid]
确保
openstack overcloud node delete
命令已运行完:(undercloud) $ openstack stack list
Copy to clipboardCopied(undercloud) $ openstack stack list
当删除操作完成后,
overcloud
堆栈的状态会显示UPDATE_COMPLETE
。重要如果您打算使用相同的主机名重新部署 Compute 服务,则需要对重新部署的节点使用现有服务记录。如果是这样,则跳过此过程中的剩余步骤,继续按照 使用相同的主机名重新部署 Compute 服务中详述的说明操作。
从节点删除 Compute 服务:
(undercloud) $ source ~/stack/overcloudrc (overcloud) $ openstack compute service list (overcloud) $ openstack compute service delete <service-id>
Copy to clipboardCopied(undercloud) $ source ~/stack/overcloudrc (overcloud) $ openstack compute service list (overcloud) $ openstack compute service delete <service-id>
从节点删除 Open vSwitch 代理:
(overcloud) $ openstack network agent list (overcloud) $ openstack network agent delete <openvswitch-agent-id>
Copy to clipboardCopied(overcloud) $ openstack network agent list (overcloud) $ openstack network agent delete <openvswitch-agent-id>
将删除的 Compute 服务作为资源提供商从放置服务中移除:
(overcloud) $ openstack resource provider list (overcloud) $ openstack resource provider delete <uuid>
Copy to clipboardCopied(overcloud) $ openstack resource provider list (overcloud) $ openstack resource provider delete <uuid>
减少包含节点数的环境文件中的
ComputeCount
参数。此文件通常被命名为node-info.yaml
。例如,如果您删除两个节点,则把节点数从五个节点减小到三个节点:parameter_defaults: ... ComputeCount: 3 ...
Copy to clipboardCopiedparameter_defaults: ... ComputeCount: 3 ...
减少节点数可确保 director 在运行
openstack overcloud deploy
时不置备新节点。
现在,可以安全地把节点从 overcloud 中删除,并将它部署用于其他目的。
使用相同的主机名重新部署 Compute 服务
要重新部署禁用的 Compute 服务,请在具有相同主机名的 Compute 节点重新启动之后再重新启用。
步骤
将删除的 Compute 服务作为资源提供商从放置服务中移除:
(undercloud) $ source ~/overcloudrc (overcloud) $ openstack resource provider list (overcloud) $ openstack resource provider delete <uuid>
Copy to clipboardCopied(undercloud) $ source ~/overcloudrc (overcloud) $ openstack resource provider list (overcloud) $ openstack resource provider delete <uuid>
检查 Compute 服务的状态:
(overcloud) $ openstack compute service list --long ... | ID | Binary | Host | Zone | Status | State | Updated At | Disabled Reason | | 80 | nova-compute | compute-1.localdomain | nova | disabled | up | 2018-07-13T14:35:04.000000 | gets re-provisioned | ...
Copy to clipboardCopied(overcloud) $ openstack compute service list --long ... | ID | Binary | Host | Zone | Status | State | Updated At | Disabled Reason | | 80 | nova-compute | compute-1.localdomain | nova | disabled | up | 2018-07-13T14:35:04.000000 | gets re-provisioned | ...
重新部署的 Compute 节点的服务状态再次为“up”后,重新启用该服务:
(overcloud) $ openstack compute service set compute-1.localdomain nova-compute --enable
Copy to clipboardCopied(overcloud) $ openstack compute service set compute-1.localdomain nova-compute --enable