16.3. 删除 Compute 节点

在某些情况下,您可能需要从 overcloud 中删除计算节点。例如,需要替换有问题的 Compute 节点。

重要

在从 overcloud 中删除 Compute 节点前,先将该节点上的工作负载迁移到其他 Compute 节点。有关更多信息,请参阅在 Compute 节点间迁移虚拟机实例

先决条件

  • 放置服务软件包 python3-OSC-placement 已安装在 undercloud 上。

步骤

  1. 查找 overcloud 配置:

    $ source ~/overcloudrc
  2. 禁用 overcloud 中传出节点上的 Compute 服务,以防止节点调度新的实例:

    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service set <hostname> nova-compute --disable
    提示

    使用 --disable-reason 选项添加有关为何要禁用该服务的简短说明。如果您打算稍后重新部署 Compute 服务,则该说明很有用。

  3. 查找 undercloud 配置:

    (overcloud) $ source ~/stackrc
  4. 确定 overcloud 堆栈的 UUID:

    (undercloud) $ openstack stack list
  5. 找出您要删除的节点的 UUID 或者主机名:

    (undercloud) $ openstack server list
  6. 从 overcloud 堆栈中删除节点,并相应地更新计划:

    (undercloud) $ openstack overcloud node delete --stack <stack_uuid> [node] [node] [node]

    用节点的 UUID 或主机名替换 [node]。

    重要

    不要混合使用 UUID 和主机名。只使用 UUID 或只使用主机名。

  7. 确保 openstack overcloud node delete 命令已运行完:

    (undercloud) $ openstack stack list

    当删除操作完成后,overcloud 堆栈的状态会显示 UPDATE_COMPLETE

    重要

    如果您打算使用相同的主机名重新部署 Compute 服务,则必须对重新部署的节点使用现有服务记录。如果是这样,则跳过此过程中的剩余步骤,继续按照 使用相同的主机名重新部署 Compute 服务中详述的说明操作。

  8. 从节点删除 Compute 服务:

    (undercloud) $ source ~/overcloudrc
    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service delete <service-id>
  9. 从节点删除 Open vSwitch 代理:

    (overcloud) $ openstack network agent list
    (overcloud) $ openstack network agent delete <openvswitch-agent-id>
  10. 将删除的 Compute 服务作为资源提供商从放置服务中移除:

    (overcloud) $ openstack resource provider list
    (overcloud) $ openstack resource provider delete <uuid>
  11. 减少包含节点数的环境文件中的 ComputeCount 参数。此文件通常被命名为 node-info.yaml。例如,如果您删除两个节点,则把节点数从五个节点减小到三个节点:

    parameter_defaults:
      ...
      ComputeCount: 3
      ...

    减少节点数可确保 director 在运行 openstack overcloud deploy 时不置备任何新节点。

您可以把节点从 overcloud 中删除,并将它重新部署用于其他目的。

使用相同的主机名重新部署 Compute 服务

要重新部署禁用的 Compute 服务,请在重新部署具有相同主机名的 Compute 节点后重新启用该服务。

步骤

  1. 将删除的 Compute 服务作为资源提供商从放置服务中移除:

    (undercloud) $ source ~/overcloudrc
    (overcloud) $ openstack resource provider list
    (overcloud) $ openstack resource provider delete <uuid>
  2. 检查 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 |
    ...
  3. 重新部署的 Compute 节点的服务状态变为 up 时,重新启用该服务:

    (overcloud) $ openstack compute service set compute-1.localdomain nova-compute --enable