第 11 章 扩展 overcloud 节点


警告

不要使用 openstack server delete 从 overcloud 中删除节点。请阅读本节中规定的操作过程,以正确地删除和替换节点。

在某些情况下,您可能需要在创建 overcloud 后添加或删除节点。例如,可能需要为 overcloud 添加计算节点。这样的情形需要更新 overcloud。

下表介绍了对每个节点类型进行扩展的支持信息:

Expand
表 11.1. 每个节点类型的扩展支持

节点类型

扩充

缩小

备注

Controller

N

N

您可以使用第 12 章 替换 Controller 节点中的操作过程来替换 Controller 节点。

Compute

Y

Y

 

Ceph Storage 节点

Y

N

在初始创建的 overcloud 中必须至少有一个 Ceph 存储节点。

Object Storage 节点

Y

Y

 
重要

在进行 overcloud 扩展前,确保至少有 10 GB 的可用空间。这些可用空间将在节点置备过程中用于保存镜像转换和缓存。

11.1. 向 overcloud 添加节点

完成下列步骤,向 director 节点池添加更多节点。

步骤

  1. 创建一个新的 JSON 文件 (newnodes.json),文件中应包含要注册的新节点详情:

    {
      "nodes":[
        {
            "mac":[
                "dd:dd:dd:dd:dd:dd"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"ipmi",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.168.24.207"
        },
        {
            "mac":[
                "ee:ee:ee:ee:ee:ee"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"ipmi",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.168.24.208"
        }
      ]
    }
  2. 运行以下命令来注册新节点:

    $ source ~/stackrc
    (undercloud) $ openstack overcloud node import newnodes.json
  3. 在注册新节点后,通过运行以下命令为每个新节点启动内省过程:

    (undercloud) $ openstack baremetal node manage [NODE UUID]
    (undercloud) $ openstack overcloud node introspect [NODE UUID] --provide

    此过程将检测和基准测试节点的硬件属性。

  4. 配置该节点的镜像属性:

    (undercloud) $ openstack overcloud node configure [NODE UUID]

11.2. 增加角色的节点数

完成以下步骤来扩展特定角色的 overcloud 节点,如 Compute 节点。

步骤

  1. 给每个新节点标记您想要的角色。例如,如要为节点标上 Compute 角色,可运行以下命令:

    (undercloud) $ openstack baremetal node set --property capabilities='profile:compute,boot_option:local' [NODE UUID]
  2. 若要缩放 overcloud,您需要编辑包含节点数目的环境文件并重新部署 overcloud。例如,若要将 overcloud 扩展到 5 个 Compute 节点,可编辑 ComputeCount 参数:

    parameter_defaults:
      ...
      ComputeCount: 5
      ...
  3. 使用更新后的文件(在本示例中,该文件名为 node-info.yaml),重新运行部署命令:

    (undercloud) $ openstack overcloud deploy --templates -e /home/stack/templates/node-info.yaml [OTHER_OPTIONS]

    务必包含初始 overcloud 创建中的所有环境文件和选项。这包括非 Compute 节点的相同缩放参数。

  4. 等待部署操作完成。

11.3. 删除 Compute 节点

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

重要

在从 overcloud 中删除计算节点前,先将该节点上的工作负载迁移到其他计算节点。请参阅第 9.12 节 “从 Compute 节点中迁移实例”了解详细信息。

步骤

  1. 查找 overcloud 配置:

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

    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service set [hostname] nova-compute --disable
  3. 查找 undercloud 配置:

    (overcloud) $ source ~/stack/stackrc
  4. 在删除 overcloud 节点时,您必须使用本地模板文件更新 overcloud 堆栈。首先,确定 overcloud 堆栈的 UUID:

    (undercloud) $ openstack stack list
  5. 找到要被删除的节点的 UUID:

    (undercloud) $ openstack server list
  6. 运行以下命令来从栈中删除节点,并相应地更新计划:

    (undercloud) $ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]
    重要

    如果在创建 overcloud 时传递了额外的环境文件,请使用 -e--environment-file 选项再次传递它们来避免对 overcloud 进行不必要的手动更改。

  7. 在继续进行操作前,确保 openstack overcloud node delete 命令已运行完。使用 openstack stack list 命令检查 overcloud 栈的状态是否已变为 UPDATE_COMPLETE
  8. 从节点删除 Compute 服务:

    (undercloud) $ source ~/stack/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]

现在,可以安全地把节点从 overcloud 中删除,并将它部署用于其他目的。

11.4. 替换 Ceph Storage 节点

您可以使用 director 来替换 director 创建的集群中的 Ceph Storage 节点。相关说明可在 Deploying an Overcloud with Containerized Red Hat Ceph 指南中找到。

11.5. 替换 Object Storage 节点

参考本节中的说明,了解如何在保持集群完整的同时替换 Object Storage 节点。本例涉及一个双节点 Object Storage 集群,其中的 overcloud-objectstorage-1 节点必须被替换掉。此操作过程的目标是添加一个节点,然后删除 overcloud-objectstorage-1(实际上是替换掉它)。

步骤

  1. 通过 ObjectStorageCount 参数增加 Object Storage 数量。此参数通常位于 node-info.yaml 中,这是包含节点数的环境文件:

    parameter_defaults:
      ObjectStorageCount: 4

    ObjectStorageCount 参数定义环境中 Object Storage 节点的数量。在本例中,我们从 3 个节点扩展到 4 个。

  2. 使用更新的 ObjectStorageCount 参数,运行部署命令:

    $ source ~/stackrc
    (undercloud) $ openstack overcloud deploy --templates -e node-info.yaml ENVIRONMENT_FILES
  3. 部署命令完成后,overcloud 将包含新增的 Object Storage 节点。
  4. 将数据复制到新节点。在删除节点(本例中为 overcloud-objectstorage-1),先等待新节点上完成复制传递。在 /var/log/swift/swift.log 文件中检查复制传递进度。当传递完成时,Object Storage 服务应该会记录类似于以下示例的日志条目:

    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
  5. 若要从环中删除旧节点,可减小 ObjectStorageCount 参数来省略旧节点。在本例中,将它减小到 3:

    parameter_defaults:
      ObjectStorageCount: 3
  6. 创建一个新环境文件,命名为 remove-object-node.yaml。此文件将确认并移除指定的 Object Storage 节点。以下内容指定了 overcloud-objectstorage-1 的移除:

    parameter_defaults:
      ObjectStorageRemovalPolicies:
        [{'resource_list': ['1']}]
  7. 在部署命令中包含 node-info.yamlremove-object-node.yaml 文件:

    (undercloud) $ openstack overcloud deploy --templates -e node-info.yaml ENVIRONMENT_FILES -e remove-object-node.yaml

director 从 overcloud 中删除对象存储节点,并更新 overcloud 中的其他节点来使删除生效。

11.6. 将节点列入黑名单

您可以阻止 overcloud 节点获得更新的部署内容。这在某些情况下非常有用,比如,您准备扩展新节点,同时想阻止现有节点获得核心 Heat 模板集合中更新的参数和资源集合。换句话说,列入黑名单的节点将完全不受栈操作的影响。

在环境文件中使用 DeploymentServerBlacklist 参数可创建黑名单。

设置黑名单

DeploymentServerBlacklist 参数是服务器名称列表。可以将其写入新的环境文件,或将参数值添加到现有的自定义环境文件,然后将此文件传递给部署命令:

parameter_defaults:
  DeploymentServerBlacklist:
    - overcloud-compute-0
    - overcloud-compute-1
    - overcloud-compute-2
注意

参数值中的服务器名称是由 OpenStack Orchestration (heat) 规定的名称,并非实际的服务器主机名。

将此环境文件包含到 openstack overcloud deploy 命令中:

$ source ~/stackrc
(undercloud) $ openstack overcloud deploy --templates \
  -e server-blacklist.yaml \
  [OTHER OPTIONS]

Heat 会将列表中的任何服务器列入黑名单,阻止其获得更新的 Heat 部署内容。在栈操作完成后,黑名单中的服务器不会发生任何变化。您也可以在操作过程中关闭或停止 os-collect-config 代理。

警告
  • 将节点列入黑名单时要非常谨慎。在使用黑名单前,必须完全清楚在有黑名单的情况下如何应用所要求的更改。使用黑名单功能有可能造成栈停止工作,或对 overcloud 执行不正确的配置。例如,如果集群配置更改应用到 Pacemaker 集群的所有成员,那么在执行更改时将 Pacemaker 集群的某个成员列入黑名单就会导致集群出现问题。
  • 不要在更新或升级过程中使用黑名单。这些过程本身有一些方法可将更改操作与特定服务器进行隔离。如需更多信息,请参阅 Upgrading Red Hat OpenStack Platform 文档。
  • 将服务器加入黑名单后,不允许再对这些节点进行更改操作,除非将其从黑名单中移除。这包括更新、升级、扩展、缩减和节点替换等操作。

清除黑名单

要清除黑名单以便对其中节点执行后续的栈操作,可编辑 DeploymentServerBlacklist,使其成为空阵列:

parameter_defaults:
  DeploymentServerBlacklist: []
警告

不要直接省略 DeploymentServerBlacklist 参数。如果省略该参数,overcloud 部署将使用先前保存的参数值。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部