10.3. 缩减裸机节点


若要缩减 overcloud 中的裸机节点数量,请标记您要从节点定义文件的堆栈中删除的节点,重新部署 overcloud,然后从 overcloud 中删除裸机节点。

先决条件

  • 成功安装 undercloud。有关更多信息,请参阅在 undercloud 上安装 director
  • 成功部署 overcloud。如需更多信息,请参阅 使用预置备节点配置基本 overcloud
  • 如果要替换 Object Storage 节点,请将您要删除的节点中的数据复制到新替换节点。等待新节点上复制传递完成。在 /var/log/swift/swift.log 文件中检查复制传递进度。传递完成后,Object Storage 服务(swift)会将条目添加到类似以下示例的日志中:

    Mar 29 08:49:05 localhost object-server: Object replication complete.
    Mar 29 08:49:11 localhost container-server: Replication run OVER
    Mar 29 08:49:13 localhost account-server: Replication run OVER
    Copy to Clipboard Toggle word wrap

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  3. 对于您要缩减的角色,减少 overcloud-baremetal-deploy.yaml 文件中的 count 参数。
  4. 定义您要从堆栈中删除的每个节点的 主机名和 名称 (如果它们尚未在角色的 instances 属性中定义)。
  5. 将 attribute provisioned: false 添加到您要删除的节点。例如,要从堆栈中删除节点 overcloud-objectstorage-1,请在 overcloud-baremetal-deploy.yaml 文件中包含以下代码片段:

    - name: ObjectStorage
      count: 3
      instances:
      - hostname: overcloud-objectstorage-0
        name: node00
      - hostname: overcloud-objectstorage-1
        name: node01
        # Removed from cluster due to disk failure
        provisioned: false
      - hostname: overcloud-objectstorage-2
        name: node02
      - hostname: overcloud-objectstorage-3
        name: node03
    Copy to Clipboard Toggle word wrap

    重新部署 overcloud 后,堆栈中不再存在使用 provisioned: false 属性定义的节点。但是,这些节点仍然以置备状态运行。

    注意

    如果要临时从堆栈中删除节点,在使用 provisioned: false 属性部署 overcloud 后,您可以使用 provisioned: true 属性重新部署 overcloud,以将节点返回到堆栈。

  6. 从 overcloud 删除节点:

    $ openstack overcloud node delete \
      --stack <stack> \
      --baremetal-deployment \
       /home/stack/templates/overcloud-baremetal-deploy.yaml
    Copy to Clipboard Toggle word wrap
    • & lt;stack> 替换为置备裸机节点的堆栈名称。如果未指定,则默认为 overcloud

      注意

      不要将您要从堆栈中删除的节点作为命令参数包括在 openstack overcloud node delete 命令中。

  7. 删除 ironic 节点:

    $ openstack baremetal node delete <ironic_node_uuid>
    Copy to Clipboard Toggle word wrap

    <ironic_node_uuid > 替换为节点的 UUID。

  8. 删除已删除的节点的网络代理:

    (overcloud)$ for AGENT in $(openstack network agent list \
      --host <ironic_node_uuid> -c ID -f value) ; \
      do openstack network agent delete $AGENT ; done
    Copy to Clipboard Toggle word wrap
  9. 置备 overcloud 节点以生成更新的 heat 环境文件,以包括在部署命令中:

    $ openstack overcloud node provision \
      --stack <stack> \
      --output <deployment_file> \
      /home/stack/templates/overcloud-baremetal-deploy.yaml
    Copy to Clipboard Toggle word wrap
    • <deployment_file> 替换为用于部署命令生成的 heat 环境文件的名称,如 /home/stack/templates/overcloud-baremetal-deployed.yaml
  10. 将 provisioning 命令生成的 overcloud-baremetal-deployed.yaml 文件添加到与其他环境文件的堆栈中,并部署 overcloud:

    $ openstack overcloud deploy \
      ...
      -e /usr/share/openstack-tripleo-heat-templates/environments \
      -e /home/stack/templates/overcloud-baremetal-deployed.yaml \
      --disable-validations \
      ...
    Copy to Clipboard Toggle word wrap

10.3.1. 手动删除 Compute 节点

如果因为无法访问的节点而导致 openstack overcloud node delete 命令失败,则必须从 overcloud 手动删除 Compute 节点。

先决条件

流程

  1. 查找 undercloud 配置:

    (overcloud)$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  2. 使用 openstack tripleo launch heat 命令启动临时 heat 进程:

    (undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db
    Copy to Clipboard Toggle word wrap

    命令在启动 heat 进程后退出。heat 进程将继续作为 podman pod 在后台运行。

  3. 使用 podman pod ps 命令来验证 ephemeral-heat 进程是否正在运行:

    (undercloud)$ sudo podman pod ps
    POD ID        NAME            STATUS      CREATED        INFRA ID      # OF CONTAINERS
    958b141609b2  ephemeral-heat  Running     2 minutes ago  44447995dbcf  3
    Copy to Clipboard Toggle word wrap
  4. 使用 export 命令导出 OS_CLOUD 环境:

    (undercloud)$ export OS_CLOUD=heat
    Copy to Clipboard Toggle word wrap
  5. 使用 openstack stack list 命令列出已安装的堆栈:

    (undercloud)$ openstack stack list
    +--------------------------------------+------------+---------+-----------------+----------------------+--------------+
    | ID                                   | Stack Name | Project | Stack Status    | Creation Time        | Updated Time |
    +--------------------------------------+------------+---------+-----------------+----------------------+--------------+
    | 761e2a54-c6f9-4e0f-abe6-c8e0ad51a76c | overcloud  | admin   | CREATE_COMPLETE | 2022-08-29T20:48:37Z | None         |
    +--------------------------------------+------------+---------+-----------------+----------------------+--------------+
    Copy to Clipboard Toggle word wrap
  6. 使用 export 命令导出 OS_CLOUD 环境:

    (undercloud)$ export OS_CLOUD=undercloud
    Copy to Clipboard Toggle word wrap
  7. 识别您要删除的节点的 UUID:

    (undercloud)$ openstack baremetal node list
    Copy to Clipboard Toggle word wrap
  8. 将要删除的节点移至维护模式:

    (undercloud)$ openstack baremetal node maintenance set <node_uuid>
    Copy to Clipboard Toggle word wrap
  9. 等待 Compute 服务将其状态与 Bare Metal 服务同步。这最多可能需要 4 分钟。
  10. 查找 overcloud 配置:

    (undercloud)$ source ~/overcloudrc
    Copy to Clipboard Toggle word wrap
  11. 删除已删除的节点的网络代理:

    (overcloud)$ for AGENT in $(openstack network agent list --host <scaled_down_node> -c ID -f value) ; do openstack network agent delete $AGENT ; done
    Copy to Clipboard Toggle word wrap
    • <scaled_down_node> 替换为要移除的节点的名称。
  12. 确认 overcloud 上已删除节点上禁用了 Compute 服务,以防止节点调度新实例:

    (overcloud)$ openstack compute service list
    Copy to Clipboard Toggle word wrap
  13. 如果没有禁用 Compute 服务,请禁用它:

    (overcloud)$ openstack compute service set <hostname> nova-compute --disable
    Copy to Clipboard Toggle word wrap
  14. 将删除的 Compute 服务作为资源提供商从放置服务中移除:

    (overcloud)$ openstack resource provider list
    (overcloud)$ openstack resource provider delete <uuid>
    Copy to Clipboard Toggle word wrap
  15. 在您要删除的 Compute 节点上,以 root 用户身份登录。
  16. 删除在 Red Hat Subscription Management 中注册的系统配置文件:

    # subscription-manager remove --all
    # subscription-manager unregister
    # subscription-manager clean
    Copy to Clipboard Toggle word wrap
    注意

    如果无法访问 Compute 节点,您可以删除红帽客户门户网站中的系统配置文件。如需更多信息,请参阅 如何删除注册到 Red Hat Subscription Management (RHSM)的系统的系统 配置文件?

  17. 查找 undercloud 配置:

    (overcloud)$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  18. 从堆栈中删除 Compute 节点:

    (undercloud)$ openstack overcloud node delete --stack <overcloud> <node> --baremetal-deployment <baremetal_deployment_file>
    Copy to Clipboard Toggle word wrap
    • <overcloud> 替换为 overcloud 堆栈的名称或 UUID。
    • 将 & lt;node > 替换为您要删除的 Compute 节点的 Compute 服务主机名或 UUID。
    • <baremetal_deployment_file > 替换为裸机部署文件的名称。

      注意

      如果节点已经关闭,这个命令会返回 WARNING 信息:

      Ansible failed, check log at `~/ansible.log`
      WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.
      Copy to Clipboard Toggle word wrap

      您可以忽略此消息。

  19. 等待 overcloud 节点删除。
  20. 使用 export 命令导出 OS_CLOUD 环境:

    (undercloud)$ export OS_CLOUD=heat
    Copy to Clipboard Toggle word wrap
  21. 当节点删除完成后,检查 overcloud 栈的状态:

    (undercloud)$ openstack stack list
    Copy to Clipboard Toggle word wrap
    Expand
    表 10.2. 结果
    状态描述

    UPDATE_COMPLETE

    delete 操作成功完成。

    UPDATE_FAILED

    删除操作失败。

    在处于维护模式时 overcloud 节点无法删除,则问题可能与硬件相关。

  22. 如果启用了 Instance HA,请执行以下操作:

    1. 为节点清理 Pacemaker 资源:

      $ sudo pcs resource delete <scaled_down_node>
      $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>'
      $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>'
      $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>'
      $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force
      Copy to Clipboard Toggle word wrap
    2. 删除节点的 STONITH 设备:

      $ sudo pcs stonith delete <device-name>
      Copy to Clipboard Toggle word wrap
  23. 如果您没有替换 overcloud 上已删除的 Compute 节点,请减少包含节点数的环境文件中的 ComputeCount 参数。此文件通常命名为 overcloud-baremetal-deploy.yaml。例如,如果您删除了一个节点,将节点数从四个节点减小到三个节点:

    parameter_defaults:
      ...
      ComputeCount: 3
      ...
    Copy to Clipboard Toggle word wrap

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

    注意

    要在从部署后替换 Compute 节点,请参阅 扩展裸机节点

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat