优化基础架构资源利用率


Red Hat OpenStack Services on OpenShift 18.0

使用 Optimize 服务(watcher)管理 OpenShift 上 Red Hat OpenStack Services 的基础架构资源利用率

OpenStack Documentation Team

摘要

安装、配置和操作 Optimize 服务(watcher),以管理 OpenShift 环境中的红帽 OpenStack 服务中的基础架构资源利用率。

本指南的内容只是一个技术预览

重要

本指南中以 技术预览 形式提供该功能,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。

使用 Create Issue 表单在 OpenShift (RHOSO)或更早版本的 Red Hat OpenStack Platform (RHOSP)上提供有关 Red Hat OpenStack Services 文档的反馈。当您为 RHOSO 或 RHOSP 文档创建问题时,这个问题将在 RHOSO Jira 项目中记录,您可以在其中跟踪您的反馈的进度。

要完成 Create Issue 表单,请确保您已登录到 JIRA。如果您没有红帽 JIRA 帐户,您可以在 https://issues.redhat.com 创建一个帐户。

  1. 点击以下链接打开 Create Issue 页面: Create Issue
  2. 完成 SummaryDescription 字段。在 Description 字段中,包含文档 URL、章节号以及问题的详细描述。不要修改表单中的任何其他字段。
  3. Create

第 1 章 Optimize 服务简介

重要

本节中的内容 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览

Red Hat OpenStack Services on OpenShift (RHOSO) Optimize service (watcher)为基于多租户 RHOSO 的云提供灵活且可扩展的资源优化服务。Optimize 服务提供了一个框架,可帮助您为基础架构资源使用设定和管理目标。

本节中包含的主题有:

1.1. 优化数据中心

Red Hat OpenStack Services on OpenShift (RHOSO) Optimize service (watcher)提供强大的框架,帮助您实现广泛的基础架构资源利用率目标,以降低数据中心操作成本。Optimize 服务框架包括一个指标接收器、复杂的事件处理器和配置集,优化处理器,以及操作计划 applier。

Expand
表 1.1. 优化术语
术语描述

操作

一个 atomic 任务,它允许 Optimize 服务在审计后转换集群的当前状态。

操作计划

指定为满足给定目标而应执行的操作流,并包含预计的全局效率以及一组效率指示器。

Audit

优化集群的请求。

Audit 模板

包含审计的目标,可能包含错误处理设置和自动化设置。

目标

人类可读的、可观察和可衡量的最终结果是实现目标的。

解决方案

执行策略的结果,以及一组提议的操作来实现相关审计的目标。

策略

算法实现,能够为特定目标提供推荐的解决方案。

以下工作流描述了 RHOSO 管理员如何使用 Optimize 服务:

  1. 确定实现的目标。

    例如,若要保存 Compute 节点消耗的能源,可整合虚拟机实例以在较少的节点上运行。

  2. 创建审计模板,通过使用 Optimize 服务定义执行 RHOSO 环境审计时使用的目标和其他设置。
  3. (可选)向 audit 模板添加一个策略。
  4. 使用审计模板运行 Optimize 服务来审计 RHOSO 环境。

    在审计后,Optimize 服务会创建一个基于目标的操作计划。

  5. 执行操作计划。

    使用操作计划运行 Optimize 服务,例如生成 Compute 服务(nova),以执行实例实时迁移到其他节点。

  6. 检查云的指标,以确认已改进实现目标。

1.2. 优化服务组件

OpenShift (RHOSO)优化服务(watcher)组件的 Red Hat OpenStack 服务托管在托管 RHOSO control plane 的 Red Hat OpenShift Container Platform (RHOCP) worker 节点上。Optimize 服务由以下组件组成:

优化服务(监视)组件

Optimize service (watcher) components

AMQP 总线
处理不同监视器组件之间的内部异步通信。
数据源
存储与集群相关的指标。Prometheus,开源、时间序列数据库是监视器的主要数据源。
watcher API
通过 CLI、仪表板(horizon)插件和 Python SDK,为外部用户实施 REST API。
watcher applier
管理由观察者决策引擎构建的行动计划的执行。taskflow 是 watcher 的默认工作流引擎。
watcher CLI
用于与观察器组件交互。
watcher 仪表板
用于通过 Dashboard (horizon)与 watcher 组件交互。
watcher 数据库

在 RHOSO 环境中存储用于资源优化的所有观察器对象:

  • 目标
  • 策略
  • 审计模板
  • audits
  • 操作计划
  • 通过操作计划 API 实现效率指标.
  • Actions
watcher Decision Engine
负责创建一组潜在的优化操作,以满足审计的目标。

第 2 章 实施优化服务的注意事项

重要

本节中的内容 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览

本节讨论在规划 Red Hat OpenStack Services (RHOSO)环境中的优化服务(watcher)时需要考虑的主题。

本节中包含的主题有:

2.1. 优化服务(监视)支持的功能

OpenShift 上的 Red Hat OpenStack Services (RHOSO) 18.0 优化服务(watcher)仅正式支持 优化基础架构资源使用中的功能

2.2. 优化服务软件要求

OpenShift (RHOSO) Optimize 服务(watcher)上的 Red Hat OpenStack Services 需要您现有的 RHOSO 18.0.6 或更高版本(至少包括以下组件)部署:

  • 计算服务(nova)
  • Identity 服务 (keystone)
  • Image 服务 (glance)
  • MariaDB
  • RabbitMQ
  • Telemetry 服务,包括 Prometheus 指标存储

不需要 Dashboard 服务(horizon)。但是,如果在 OpenStack 云中启用它,则 Dashboard 服务部署后提供了 Optimize 服务仪表板。

2.3. 优化服务策略

Red Hat OpenStack Services on OpenShift (RHOSO) Optimize service (watcher)策略是一个算法实施,可用于实现目标。有些策略具有相同的目标,但以不同方式实现此目标。选择最适合您环境的策略和目标。

在 RHOSO 18.0.10 中,Optimize 服务支持以下策略:

2.3.1. 主机维护策略

主机迁移策略可用于准备 Compute 节点以进行调度的维护,而不会中断用户。提供备份节点后,该策略利用计算服务(nova)迁移功能将所有实例移到备份节点。如果没有备份节点,策略将依赖于 nova-scheduler 来迁移所有实例。主机维护策略将 Compute 节点的状态设置为 禁用,该节点不再运行实例的主机。

有关如何使用此策略的演示,请参阅为计划维护准备 Compute 节点

  • 要求:

    • 至少两个物理主机,充当 Compute 节点。
    • 计算服务(nova)执行实时和冷迁移的能力。
  • 用户提供的参数:

    • -p maintenance_node=<compute_node_name > (必需)- 需要维护的 Compute 节点的名称。
    • -p backup_node=<compute_node_name > (可选)- 将实时迁移实例的备份 Compute 节点的名称。如果没有备份节点,策略将依赖于 nova-scheduler 来迁移所有实例。

2.3.2. 节点资源整合策略

节点资源整合策略在集群的源和目标 Compute 节点之间移动实例。它使用计算服务(nova)实时迁移功能来整合资源使用。节点资源策略不会更改源 Compute 节点的状态。

有关如何使用此策略的演示,请参阅 整合节点资源

  • 要求:

    • 至少两个使用相同 CPU 和 RAM 硬件的 Compute 节点。
    • Compute 服务能够执行到任何活动 Compute 节点的实时迁移。
  • 用户提供的参数:

    • -p host_choice=<auto | specify > (可选)- 用于选择服务器迁移目标节点的方法。值 auto 导致 Compute 服务(nova)调度程序选择迁移目标节点。该值 指定 会导致策略选择迁移目标节点。如果没有指定 host_choice,策略默认为 auto

2.3.3. VM 工作负载整合策略

VM 工作负载整合策略在集群的源和目标 Compute 节点之间移动实例。它使用 Compute 服务(nova)迁移功能来确保节点没有太多或太少的 CPU 使用率。VM 工作负载整合策略将源 Compute 节点的状态设置为 disabled

有关如何使用此策略的演示,请参阅 合并虚拟机实例

  • 要求:

    • 至少两个物理主机,充当 Compute 节点。
    • Compute 服务执行迁移到任何活跃 Compute 节点的能力。
  • 用户提供的参数:

    • -p period=<seconds > (可选)- 从指标数据源获取统计聚合的时间间隔(以秒为单位)。如果没有指定 period,策略默认为一小时(3600 秒)。

2.3.4. 工作负载平衡迁移策略

当虚拟机实例 CPU 或 RAM 使用率高于指定阈值时,工作负载平衡迁移策略使用 Compute 服务(nova)实时迁移功能移动单个虚拟机实例。此策略基于物理主机的工作负载,这些工作负载作为计算节点计算为托管实例使用的资源总和。移动的实例应使主机接近集群中所有 Compute 节点的平均工作负载。

有关如何使用此策略的演示,请参阅 负载平衡单个实例工作负载

  • 要求:

    • 至少两个使用 CPU 和 RAM 硬件的 Compute 节点。
    • Compute 服务能够执行到任何活动 Compute 节点的实时迁移。
  • 用户提供的参数:

    所有参数都是可选的。当用户不提供参数时,策略将使用默认值。

    • -p metrics=instance_cpu_usage|instance_ram_usage - 所需负载平衡的类型:基于 CPU 或 RAM 使用率。默认为 instance_cpu_usage
    • -p threshold=&lt;percentage>- 一个百分比,格式为 0.0 - 100.0 形式的十进制数(n.n),这是计算主机中 CPU 或内存使用情况的阈值。当 CPU 使用率或 RAM 使用率超过阈值时,优化服务会搜索可改进 Compute 节点资源使用情况的实例实时迁移。阈值 适用于迁移中涉及的源和目标节点。默认值为 25.0
    • -p period=<seconds >- 评估阈值的时间间隔(以秒为单位)。默认值为五分钟(300 秒)。

2.3.5. 工作负载稳定策略

工作负载稳定(stabilization)策略通过移动虚拟机实例来响应集群中的过载。它使用计算服务(nova)实时迁移功能来稳定集群。此策略基于标准偏差。

有关如何使用此策略的演示,请参阅 稳定多个工作负载

  • 要求:

    • 至少两个使用 CPU 和 RAM 硬件的 Compute 节点。
    • Compute 服务能够执行到任何活动 Compute 节点的实时迁移。
  • 用户提供的参数:

    所有参数都是可选的。当用户不提供参数时,策略将使用默认值。

    • -p metrics='["instance_cpu_usage","instance_ram_usage"]' - 策略用来评估集群工作负载的指标或指标。除非未指定,否则默认是评估 CPU 使用量和 RAM 使用量。
    • -p thresholds='{"instance_cpu_usage": <trigger_value>, "instance_ram_usage": <trigger_value>}' - number in the 0.0 - 0.5,代表规范化 CPU 或 RAM 使用量的值,其中 0.0 是完全平衡的集群,值 0.5 将是一个完全未平衡的集群。超过阈值时,会触发策略来查找操作计划。两种使用类型的默认阈值都是 0.2
    • -p weights='{"instance_cpu_usage_weight": 1.0, "instance_ram_usage_weight": 1.0}' - number, 用于计算常见标准 deviation。两种使用类型的默认权重值为 1.0。
    • -p instance_metrics='{"instance_cpu_usage":"host_cpu_usage","instance_ram_usage":"host_ram_usage"}' - 使用实例指标获取 CPU 和 RAM 使用量的硬件统计的映射。不要更改这些参数或其值。
    • -p host_choice='cycle|retry|fullsearch' - 策略用于为每个实时迁移获取目标主机的方法。有效值为:查询迭代中的主机;使用 count_ retry 参数查询随机主机; fullsearch (从列表中查询每个主机)。默认值为 retry
    • -p retry_count='<number>' - 一个 when -p host_choice='retry' 所使用的数字,用于使用的随机查询数。默认值为 1
    • -p period='{"instance":<seconds>,"node":<seconds>}' - 重复间隔时间(以秒为单位),将实例和主机示例分组到聚合中。Optimize 服务(watcher)仅使用最后的时间。instance 和 node 的默认句点分别是 720600 秒。

2.3.6. 区迁移策略

区域迁移策略高效地移动多个虚拟机实例,使用计算服务(nova)实时迁移功能,无需用户中断,且对硬件维护的最小停机时间。

有关如何使用此策略的演示,请参阅 简化工作负载迁移

注意

区域 迁移策略中的术语区域指的是用户定义的计算节点和存储池集合。zone 不引用 OpenStack 可用区。

  • 要求:

    • 至少两个物理主机,充当 Compute 节点。
    • 计算服务(nova)执行实时和冷迁移的能力。
  • 用户提供的参数:

    • -p compute_nodes='[{<compute_nodes_array_elements&gt;}'(必需)- 要迁移的 Compute 节点。请参阅本文档稍后的"compute_nodes 数组元素"。
    • -p parallel_total (可选)- 在总数中并行运行的操作数量。如果没有指定 parallel_total,策略默认为 6
    • -p parallel_per_node (可选)- 一个操作计划中每个计算节点并行运行的操作数量。如果没有指定 parallel_per_node,策略默认为 2
    • -p priority (可选)- 优先选择实例的列表。
  • compute_nodes 数组元素:

    `-p compute_nodes='[{"src_node":"<compute_node_name>",
    "dst_node":"<compute_node_name>"}]'`
    • "src_node":"<compute_node_name >" (必需)- 从中迁移实例的 Compute 节点的名称。
    • "dst_node":"<compute_node_name >" (可选)- 实例迁移到的 Compute 节点的名称。如果没有指定目标节点,策略依赖于 nova-scheduler 来选择目标节点。
  • 优先级 对象元素:

    `-p priority='[{
    "project":"<project_name>,...",
    "compute_nodes='[{<compute_node_array_elements>}]'",
    "compute='["vcpu_num", "mem_size", "disk_size", "created_at"]'"
    }]'`
    • "project":"<project_name>,..." (可选)- 包含优先级的 Compute 节点和卷的项目(租户)名称。
    • "compute_nodes='[{<compute_node_array_elements >}'(可选)- 要优先级的 Compute 节点名称。请参阅本文档前面的"compute_nodes 数组元素"。
    • "compute='["vcpu_num", "mem_size", "disk_size", "created_at"]'" (可选)- 要优先选择的实例的属性。

2.4. 为优化服务验证您的 RHOSO 环境

在部署 Optimize 服务(watcher)之前,请确保您的 Red Hat OpenStack Services on OpenShift (RHOSO)环境满足必要的要求。

先决条件

  • 包含两个或多个 Compute 节点的功能 RHOSO 18.0.6 或更高版本部署。
  • 计算服务(nova)实时迁移功能可正常运行。
  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 验证服务端点是否可用:

    $ oc rsh openstackclient openstack endpoint list -c 'ID' -c 'Service Name' -c 'Enabled'

    输出示例

    +----------------------------------+--------------+---------+
    | ID                               | Service Name | Enabled |
    +----------------------------------+--------------+---------+
    | 0bada656064a4d409bc5fed610654edd | neutron      | True    |
    | 17453066f8dc40bfa0f8584007cffc9a | cinderv3     | True    |
    | 22768bf3e9a34fefa57b96c20d405cfe | keystone     | True    |
    | 54e3d48cdda84263b7f1c65c924f3e3a | glance       | True    |
    | 74345a18262740eb952d2b6b7220ceeb | keystone     | True    |
    | 789a2d6048174b849a7c7243421675b4 | placement    | True    |
    | 9b7d8f26834343a59108a4225e0e574a | nova         | True    |
    | a836d134394846ff88f2f3dd8d96de34 | nova         | True    |
    | af1bf23e62c148d3b7f6c47f8f071739 | placement    | True    |
    | ce0489dfeff64afb859338e480397f90 | glance       | True    |
    | db69cc22117344b796f97e8dd3dc67e5 | neutron      | True    |
    | fa48dc132b524915b4d1ca963c50a653 | cinderv3     | True    |
    +----------------------------------+--------------+---------+

  2. 验证带有 Prometheus 指标存储的 Telemetry Operator 是否已就绪:

    $ oc get telemetry

    输出示例

    NAME        STATUS   MESSAGE
    telemetry   True     Setup complete

    $ oc get metricstorage

    输出示例

    NAME             STATUS   MESSAGE
    metric-storage   True     Setup complete

第 3 章 在现有 RHOSO 环境中部署优化服务

重要

本节中的内容 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览

OpenShift (RHOSO)控制平面上的 Red Hat OpenStack Services 包含用于管理云的 RHOSO 服务。Optimize 服务(watcher)和其他 RHOSO 服务作为 Red Hat OpenShift Container Platform (RHOCP)工作负载运行。

注意

通常,OpenStack Operator (openstack-operator)将安装所有 OpenStack 服务 Operator,是用于管理这些 Operator 的接口。但是,在 RHOSO 18.0.6 及更高版本中,watcher-operator 是 Optimize 服务的 Operator,它是一个独立的 Operator,可独立管理。

在 RHOSO 环境中部署 Optimize 服务包括以下步骤:

  1. 安装 Optimize service Operator。

    注意

    您可以使用 OCP 命令行界面 或其控制台

  2. 更新用于优化服务凭证的 Secret CR
  3. 在现有的 RHOSO control plane 中创建 Optimize 服务

Optimize 服务(watcher)以及 OpenShift (RHOSO)上的其他红帽 OpenStack 服务作为在 Red Hat OpenShift Container Platform (RHOCP)集群上运行的一系列 Operator 实施。这些 Operator 管理 RHOSO 云的计算、存储、网络和其他服务。要部署 Optimize 服务,您可以在托管 RHOSO control plane 的 RHOCP 集群上安装 watcher-operator

这个步骤描述了使用 Red Hat OpenShift 控制台安装 watcher-operator。作为使用控制台的替代选择,您可以使用 OpenShift CLI 安装 watcher-operator

注意

通常,OpenStack Operator (openstack-operator)将安装所有 OpenStack 服务 Operator,是用于管理这些 Operator 的接口。但是,在 RHOSO 18.0.6 及更高版本中,watcher-operator 是 Optimize 服务的 Operator,它是一个独立的 Operator,可独立管理。

先决条件

  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。
  • 已在工作站上安装了 OpenShift 控制台。

步骤

  1. 以具有 cluster-admin 权限的用户身份登录 OpenShift 控制台。
  2. OperatorsOperatorHub
  3. Filter by keyword 字段中,输入 Watcher

    名为 Watcher Operator (技术预览) 的 operator 应该会显示 Red Hat source 标签。

  4. Watcher Operator (技术预览)。
  5. 确保将 Installation 模式设置为 All namespaces in the cluster
  6. Installed Namespace 中,选择 openstack-operators 并点 Install

    Watcher Operator 的状态为 Succeeded 时,Operator 会被部署并就绪。

3.2. 安装 Optimize service Operator

Optimize 服务(watcher)以及 OpenShift (RHOSO)上的其他红帽 OpenStack 服务作为在 Red Hat OpenShift Container Platform (RHOCP)集群上运行的一系列 Operator 实施。这些 Operator 管理 RHOSO 云的计算、存储、网络和其他服务。要部署 Optimize 服务,您可以在托管 RHOSO control plane 的 RHOCP 集群上安装 watcher-operator

这个流程描述了使用 RHOCP 命令行界面安装 watcher-operator。作为使用 CLI 的替代选择,您可以使用 RHOCP 控制台安装 watcher-operator

注意

通常,OpenStack Operator (openstack-operator)将安装所有 OpenStack 服务 Operator,是用于管理这些 Operator 的接口。但是,在 RHOSO 18.0.6 及更高版本中,watcher-operator 是 Optimize 服务的 Operator,它是一个独立的 Operator,可独立管理。

步骤

  1. 创建一个包含 watcher-operator 的自定义资源定义(CRD)的 YAML 文件,如 watcher-operator.yaml

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: watcher-operator
      namespace: openstack-operators
    spec:
      name: watcher-operator
      channel: stable-v1.0
      source: redhat-operators
      sourceNamespace: openshift-marketplace
  2. watcher-operator 创建资源:

    $ oc apply -f watcher-operator.yaml
    
    subscription.operators.coreos.com/watcher-operator created
  3. 确认已安装了 watcher-operator

    $ oc get csv watcher-operator.v1.0.7

    输出示例:

    NAME                  	  DISPLAY        	VERSION   REPLACES   PHASE
    watcher-operator.v1.0.7   Watcher Operator   1.0.7            	Succeeded

3.3. 更新用于优化服务凭证的 Secret CR

您必须创建一个 Secret 自定义资源(CR),以提供对 OpenShift (RHOSO) Optimize 服务(watcher) pod 上 Red Hat OpenStack Services 的安全访问。

警告

在部署 control plane 后,您无法更改服务密码。如果在部署 control plane 后在 osp-secret 中更改了服务密码,则会重新配置服务以使用新密码,但 Identity 服务(keystone)中不会更新密码。这会导致服务中断。

先决条件

  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 打开 Secret CR 文件(通常称为 osp-secret),您用来为初始 RHOSO control plane 部署提供安全访问 RHOSO 服务 pod,例如 openstack_service_secret.yaml
  2. 添加一个 WatcherPassword 字段:

    apiVersion: v1
    data:
    ...
      NeutronDatabasePassword: <base64_password>
      NeutronPassword: <base64_password>
      NovaAPIDatabasePassword: <base64_password>
      NovaAPIMessageBusPassword: <base64_password>
      NovaCell0DatabasePassword: <base64_password>
      NovaCell0MessageBusPassword: <base64_password>
      NovaCell1DatabasePassword: <base64_password>
      NovaCell1MessageBusPassword: <base64_password>
      NovaPassword: <base64_password>
      OctaviaDatabasePassword: <base64_password>
      OctaviaPassword: <base64_password>
      PlacementDatabasePassword: <base64_password>
      PlacementPassword: <base64_password>
      SwiftPassword: <base64_password>
      WatcherPassword: <base64_password>
    kind: Secret
    metadata:
      name: osp-secret
      namespace: openstack
    type: Opaque
  3. 更新 Secret CR:

    $ oc apply -f openstack_service_secret.yaml -n openstack

验证

  • 确认存在 WatcherPassword 字段:

    $ oc describe secret osp-secret -n openstack | grep Watcher

    输出示例

    WatcherPassword:                  9 bytes

3.4. 在现有 RHOSO control plane 中创建优化服务

在 OpenShift (RHOSO)控制平面的现有 Red Hat OpenStack Services 中创建优化服务(watcher)包括:

  1. 创建 RHOSO 用来通过安全 HTTP 连接(HTTPS)访问监视器服务所需的证书。
  2. 定义 Watcher 自定义资源(CR)以创建 Optimize 服务,以在 RHOSO control plane 中运行作为 Red Hat OpenShift Container Platform (RHOCP)工作负载。

执行以下操作需要三个单独的证书:

  • 在 OpenShift 路由上配置 TLS。
  • watcher 内部端点通信。
  • watcher 公共端点通信。

您可以通过定义 watcher-certificates.yaml 文件来创建三个所需的 Certificate 对象。当 oc 应用 证书文件时,OpenStack Operator 安装的 Cert-Manager Operator 会创建证书。

先决条件

  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 创建一个 watcher-certificates.yaml 文件,其中包含 OpenStack control plane 的正确项目,如 openstack,以及集群的正确域,如 watcher-internal.openstack.svc.cluster.local

    提示

    您可以运行以下命令来获取集群的正确域:

    $ oc get ingresses.config/cluster -o jsonpath={.spec.domain}
  2. watcher-certificates.yaml 文件中,添加您必须创建的证书的名称。

    Example

    在以下示例中,证书用于:

    • 与内部端点通信: cert-watcher-internal-svc
    • 与外部端点通信: cert-watcher-public-route
    • 在 OpenShift 路由上配置 TLS: cert-watcher-public-svc

      ---
      apiVersion: cert-manager.io/v1
      kind: Certificate
      metadata:
        name: watcher-internal-svc
        namespace: openstack
      spec:
        dnsNames:
        - watcher-internal.openstack.svc
        - watcher-internal.openstack.svc.cluster.local
        duration: 43800h0m0s
        issuerRef:
          group: cert-manager.io
          kind: Issuer
          name: rootca-internal
        secretName: cert-watcher-internal-svc
        usages:
        - key encipherment
        - digital signature
        - server auth
      ---
      apiVersion: cert-manager.io/v1
      kind: Certificate
      metadata:
        name: watcher-public-route
      spec:
        dnsNames:
        - watcher-public-openstack.example.com
        issuerRef:
          group: cert-manager.io
          kind: Issuer
          name: rootca-public
        secretName: cert-watcher-public-route
        usages:
        - key encipherment
        - digital signature
        - server auth
      ---
      apiVersion: cert-manager.io/v1
      kind: Certificate
      metadata:
        name: watcher-public-svc
      spec:
        dnsNames:
        - watcher-public.openstack.svc
        - watcher-public.openstack.svc.cluster.local
        duration: 43800h0m0s
        issuerRef:
          group: cert-manager.io
          kind: Issuer
          name: rootca-public
        secretName: cert-watcher-public-svc
        usages:
        - key encipherment
        - digital signature
        - server auth
  3. 应用 watcher-certificates.yaml 文件来创建三个证书:

    $ oc apply -f watcher-certificates.yaml -n openstack

    输出示例

    certificate.cert-manager.io/watcher-internal-svc created
    certificate.cert-manager.io/watcher-public-route created
    certificate.cert-manager.io/watcher-public-svc created

  4. 在工作站上创建一个名为 watcher.yaml 的文件,以定义 Watcher CR:

    apiVersion: watcher.openstack.org/v1beta1
    kind: Watcher
    metadata:
      name: watcher
  5. 指定用于 为 Optimize 服务凭证更新 Secret CR 中用来提供对 watcher 服务 pod 的安全访问的 Secret CR

    apiVersion: watcher.openstack.org/v1beta1
    kind: Watcher
    metadata:
      name: watcher
    spec:
      databaseInstance: "openstack"
      secret: osp-secret
      apiServiceTemplate:
    ...
  6. Watcher CR 文件中,watcher.yaml,将 endpointURL 字段中的 example.com 域替换为集群的正确域:

    apiVersion: watcher.openstack.org/v1beta1
    kind: Watcher
    metadata:
      name: watcher
    spec:
      databaseInstance: "openstack"
      secret: osp-secret
      apiOverride:
        tls:
          secretName: cert-watcher-public-route
      apiServiceTemplate:
        override:
          service:
            public:
              endpointURL: https://watcher-public-openstack.example.com
        tls:
          caBundleSecretName: "combined-ca-bundle"
          api:
            internal:
              secretName: cert-watcher-internal-svc
            public:
              secretName: cert-watcher-public-svc
  7. 部署 Watcher CR:

    $ oc apply -f watcher.yaml -n openstack

    输出示例

    watcher.watcher.openstack.org/watcher configured

  8. 检查服务状态:

    $ oc wait -n openstack --for condition=Ready --timeout=300s Watcher watcher

    watcher 指的是 CR 文件中的 kind 字段,watcher 指的是 CR 文件中的 name 字段。

    输出示例

    watcher.watcher.openstack.org/watcher condition met

验证

  1. 确认 Optimize 服务(watcher)已注册到 Identity 服务(keystone),并出现在 OpenStack 服务列表中:

    $ oc rsh openstackclient openstack service list

    输出示例

    +----------------------------------+------------+-------------+
    | ID                               | Name       | Type        |
    +----------------------------------+------------+-------------+
    | 1470e8d6019446a1bcdfdb6dc55f3f6a | nova       | compute     |
    | 41d60e1c678142cf8e5daf7a82af1864 | neutron    | network     |
    | 5b0d95d1c08e4deb832815addd859924 | ceilometer | Ceilometer  |
    | 7e081cb4928945d7aa41d1622f7b8586 | cinderv3   | volumev3    |
    | 8d7ee56ca2bb4dba999d67580909dd90 | glance     | image       |
    | c3348e10fb414780988fbbceac9c4b5f | watcher    | infra-optim |
    | db60453eca65409bbb0b61f4295c66ec | placement  | placement   |
    | fa717124fbcb4d708ba4c41c9109df81 | keystone   | identity    |
    +----------------------------------+------------+-------------+

  2. 要确认 openstackclient pod 可以与监视服务通信,请验证 OpenStack 云是否与观察器端点通信:

    $ oc rsh openstackclient openstack optimize service list

    输出示例

    +----+-------------------------+---------------------------+--------+
    | ID | Name                    | Host                      | Status |
    +----+-------------------------+---------------------------+--------+
    |  1 | watcher-applier         | watcher-applier-0         | ACTIVE |
    |  2 | watcher-decision-engine | watcher-decision-engine-0 | ACTIVE |
    +----+-------------------------+---------------------------+--------+

  3. 确认端点使用 HTTPS:

    $ oc rsh openstackclient openstack endpoint list --service infra-optim -c 'Service Name' -c 'Interface' -c 'URL'

    输出示例

    +--------------+-----------+---------------------------------------------------------------+
    | Service Name | Interface | URL                                                           |
    +--------------+-----------+---------------------------------------------------------------+
    | watcher      | public    | https://watcher-public-watcher-kuttl-default.example.com      |
    | watcher      | internal  | https://watcher-internal.watcher-kuttl-default.svc:9322       |
    +--------------+-----------+---------------------------------------------------------------+

第 4 章 优化服务工作流示例

重要

本节中的内容 作为技术预览提供,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览

此 Red Hat OpenStack Services on OpenShift (RHOSO)中的 Optimize 服务(watcher)附带两个示例工作流。一个工作流使用 OpenStack CLI,另一个工作流使用 OpenStack Dashboard (horizon)。这两个示例工作流要求您创建实例。有关创建实例的详情,请参考 创建和管理实例 中的 创建实例

本节中包含的主题有:

先决条件

  • 功能 RHOSO 18.0 部署,其中包含两个或多个 Compute 节点。
  • 计算服务(nova)实时迁移功能可正常运行。
  • Optimize 服务可正常运行。
  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

4.1. 整合节点资源

使用 节点资源整合策略 来减少工作负载分布,并将实例整合到较小的 Compute 节点子集中。OpenShift 上的 Red Hat OpenStack Services (RHOSO)管理员可以使用带有节点资源整合策略的 Optimize 服务(watcher)将所有运行实例从源 Compute 节点迁移到目标 Compute 节点,而无需用户中断。与 VM 工作负载整合策略不同,节点资源整合策略不会将源 Compute 节点的状态设置为 disabled

Expand
表 4.1. 目标和策略演示了
目标策略

server_consolidation

node_resource_consolidation

先决条件

  • 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
  • 您的 RHOSO 环境至少包含两个 Compute 节点,每个节点至少运行一个实例。
  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 从您的工作站访问 OpenStackClient pod 的远程 shell:

    $ oc rsh -n openstack openstackclient
  2. 验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:

    $ openstack server list --long -c Name -c Host

    输出示例

    在本例中,实例 test01test02 分别在 compute1compute2 上运行:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute1.ctlplane.localdomain |
    +--------+-------------------------------+
  3. 创建使用策略 node_resource_consolidation 和目标 server_consolidation 的审计模板。

    Example

    在本例中,audit 模板名为 NodeResourceConsolidation

    $ openstack optimize audittemplate create -s node_resource_consolidation NodeResourceConsolidation server_consolidation

    输出示例

    +-------------+--------------------------------------+
    | Field       | Value                                |
    +-------------+--------------------------------------+
    | UUID        | 6e7f98fc-c311-4097-9370-fa66e5bfedcf |
    | Created At  | 2025-07-11T17:39:37.776106+00:00     |
    | Updated At  | None                                 |
    | Deleted At  | None                                 |
    | Description | None                                 |
    | Name        | NodeResourceConsolidation            |
    | Goal        | server_consolidation                 |
    | Strategy    | node_resource_consolidation          |
    | Audit Scope | []                                   |
    +-------------+--------------------------------------+
  4. 确认已创建了 audit 模板:

    $ openstack optimize audittemplate list

    输出示例

    +----------------------+-----------------------------+
    | Goal                 | Strategy                    |
    +----------------------+-----------------------------+
    | server_consolidation | node_resource_consolidation |
    +----------------------+-----------------------------+
  5. 运行基于策略、node_resource_consolidation 和目标 server_consolidation 的审计模板。

    Example

    在此审计中,使用了 NodeResourceConsolidation audit 模板,并检查这两个 Compute 节点的资源使用情况。策略参数 host_choice=specify 设定了,这意味着策略将指定要迁移实例的节点:

    $ openstack optimize audit create -a NodeResourceConsolidation \
    -p host_choice=specify

    有关此策略使用的参数的更多信息,请参阅 节点资源整合策略

    输出示例

    +---------------+--------------------------------------------------------+
    | Field         | Value                                                  |
    +---------------+--------------------------------------------------------+
    | UUID          | 7984626e-cc14-4b87-ab96-f0127f2da51e                   |
    | Name          | node_resource_consolidation-2025-07-11T17:45:36.604178 |
    | Created At    | 2025-07-11T17:45:36.615613+00:00                       |
    | Updated At    | None                                                   |
    | Deleted At    | None                                                   |
    | State         | PENDING                                                |
    | Audit Type    | ONESHOT                                                |
    | Parameters    | {'host_choice': 'specify'}                             |
    | Interval      | None                                                   |
    | Goal          | server_consolidation                                   |
    | Strategy      | node_resource_consolidation                            |
    | Audit Scope   | []                                                     |
    | Auto Trigger  | False                                                  |
    | Next Run Time | None                                                   |
    | Hostname      | None                                                   |
    | Start Time    | None                                                   |
    | End Time      | None                                                   |
    | Force         | False                                                  |
    +---------------+--------------------------------------------------------+
  6. 确认 Optimize 服务运行审计:

    $ openstack optimize audit list

    输出示例

    如果审计 状态 的值为 SUCCEEDED,则审计运行并创建了操作计划:

    +----------------------------+-----------+-----------------------------+
    | UUID                       | State     | Strategy                    |
    +----------------------------+-----------+-----------------------------+
    | 7984626e-cc14-4b87-ab96-   | SUCCEEDED | node_resource_consolidation |
    | f0127f2da51e               |           |                             |
    +----------------------------+-----------+-----------------------------+
  7. 检查操作计划。

    Example

    $ openstack optimize actionplan list \
    --audit 7984626e-cc14-4b87-ab96-f0127f2da51e

    输出示例

    在本例中,全局 efficacyReleased_nodes_ratio: 50.00 %。此值表示,如果您执行操作计划,计算服务将实时迁移实例,以便环境中的一半 Compute 节点会被释放,并且主机没有正在运行的实例:

    +---------------------------+-------------+----------------------------+
    | UUID                      | State       | Global efficacy            |
    +---------------------------+-------------+----------------------------+
    | 71fc5c0c-5890-4cd8-b919-  | RECOMMENDED | Released_nodes_ratio:      |
    | f06eb94da94b              |             | 50.00 %                    |
    |                           |             |                            |
    +---------------------------+-------------+----------------------------+
  8. 列出操作计划中包含的操作。

    Example

    $ openstack optimize action list \
    --action-plan 71fc5c0c-5890-4cd8-b919-f06eb94da94b

    输出示例

    在本例中,操作计划包含一个操作,迁移

    +--------------------------------------+---------+---------+
    | UUID                                 | State   | Action  |
    +--------------------------------------+---------+---------+
    | bda5053b-2489-49fe-bc04-5b2ad3bc5075 | PENDING | migrate |
    +--------------------------------------+---------+---------+
  9. 您可以查看更多有关操作的详情:

    Example

    $ openstack optimize action show bda5053b-2489-49fe-bc04-5b2ad3bc5075

    输出示例

    在本例中,操作计划将实时迁移其中一个 Compute 节点上运行的所有实例,以释放该节点:

    +-------------+--------------------------------------------------------+
    | Field       | Value                                                  |
    +-------------+--------------------------------------------------------+
    | UUID        | bda5053b-2489-49fe-bc04-5b2ad3bc5075                   |
    | Created At  | 2025-07-11T17:45:36+00:00                              |
    | Updated At  | None                                                   |
    | Deleted At  | None                                                   |
    | Parents     | []                                                     |
    | State       | PENDING                                                |
    | Action Plan | 71fc5c0c-5890-4cd8-b919-f06eb94da94b                   |
    | Action      | migrate                                                |
    | Parameters  | {'migration_type': 'live', 'source_node':              |
    |             | 'compute1.ctlplane.localdomain', 'resource_name':      |
    |             | 'test01', 'destination_node':                          |
    |             | 'compute2.ctlplane.localdomain', 'resource_id':        |
    |             | '331141f0-2335-4bef-8129-c27041c4d632'}                |
    | Description | Moving a VM instance from source_node to               |
    |             | destination_node                                       |
    +-------------+--------------------------------------------------------+
  10. 执行操作计划。

    Example

    $ openstack optimize actionplan start \
    71fc5c0c-5890-4cd8-b919-f06eb94da94b

    输出示例

    +---------------------+------------------------------------------------+
    | Field               | Value                                          |
    +---------------------+------------------------------------------------+
    | UUID                | 71fc5c0c-5890-4cd8-b919-f06eb94da94b           |
    | Created At          | 2025-07-11T17:45:36+00:00                      |
    | Updated At          | 2025-07-11T18:04:55+00:00                      |
    | Deleted At          | None                                           |
    | Audit               | 7984626e-cc14-4b87-ab96-f0127f2da51e           |
    | Strategy            | node_resource_consolidation                    |
    | State               | PENDING                                        |
    | Efficacy indicators | [{'name': 'compute_nodes_count',               |
    |                     | 'description': 'The total number of enabled    |
    |                     | compute nodes.', 'unit': None, 'value': 2.0},  |
    |                     | {'name': 'released_compute_nodes_count',       |
    |                     | 'description': 'The number of compute nodes to |
    |                     | be released.', 'unit': None, 'value': 1.0},    |
    |                     | {'name': 'instance_migrations_count',          |
    |                     | 'description': 'The number of VM migrations to |
    |                     | be performed.', 'unit': None, 'value': 1.0}]   |
    | Global efficacy     | [{'name': 'released_nodes_ratio',              |
    |                     | 'description': 'Ratio of released compute      |
    |                     | nodes divided by the total number of enabled   |
    |                     | compute nodes.', 'unit': '%', 'value': 50.0}]  |
    | Hostname            | None                                           |
    +---------------------+------------------------------------------------+
  11. 确认操作是否成功。

    Example

    $ openstack optimize action list \
    --action-plan 71fc5c0c-5890-4cd8-b919-f06eb94da94

    输出示例

    +-----------------------+-----------+------------------------+---------+
    | UUID                  | State     | Action Plan            | Action  |
    +-----------------------+-----------+------------------------+---------+
    | bda5053b-2489-49fe-   | SUCCEEDED | 71fc5c0c-5890-4cd8-    | migrate |
    | bc04-5b2ad3bc5075     |           | b919-f06eb94da94b      |         |
    +-----------------------+-----------+------------------------+---------+
  12. 确认其中一个 Compute 节点不再托管任何实例:

    $ openstack server list --long

    输出示例

    在本例中,实例 test01test02 现在在同一 Compute 节点 compute2 上运行。这意味着 compute1 节点已释放:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute2.ctlplane.localdomain |
    +--------+-------------------------------+
  13. 退出 openstackclient pod:

    $ exit

4.2. 整合虚拟机实例

使用带有 VM 工作负载整合策略的 Optimize 服务(watcher)在物理主机 CPU 或 RAM 利用率百分比超过指定阈值时移动虚拟机实例工作负载。所迁移的实例应该会导致主机的工作负载大约是 OpenShift (RHOSO)集群中红帽 OpenStack 服务中所有 Compute 节点的平均工作负载。与节点资源整合策略不同,VM 工作负载整合策略会将源 Compute 节点的状态设置为 禁用

Expand
表 4.2. 目标和策略演示了
目标策略

server_consolidation

vm_workload_consolidation

先决条件

  • 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
  • 您的 RHOSO 环境至少包含两个 Compute 节点,每个节点至少运行一个实例。
  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 从您的工作站访问 OpenStackClient pod 的远程 shell:

    $ oc rsh -n openstack openstackclient
  2. 验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:

    $ openstack server list --long

    输出示例

    在本例中,在 compute1 上运行的 test01test03 实例具有较大的 RAM 负载。我们希望将 Optimize 服务与工作负载平衡策略结合使用,将至少一个这些实例迁移到具有更多容量的 Compute 节点,而无需用户中断:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test04 | compute2.ctlplane.localdomain |
    | test03 | compute1.ctlplane.localdomain |
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute1.ctlplane.localdomain |
    +--------+-------------------------------+
  3. 创建使用策略 vm_workload_consolidation 和目标 server_consolidation 的审计模板。

    Example

    在本例中,audit 模板名为 WorkLoadConsolidation

    $ openstack optimize audittemplate create -s vm_workload_consolidation \
    WorkLoadConsolidation server_consolidation

    输出示例

    +-------------+--------------------------------------+
    | Field       | Value                                |
    +-------------+--------------------------------------+
    | UUID        | eebd556d-b95b-4f1b-91fa-8a08a04a765b |
    | Created At  | 2025-07-11T19:18:28.283497+00:00     |
    | Updated At  | None                                 |
    | Deleted At  | None                                 |
    | Description | None                                 |
    | Name        | WorkLoadConsolidation                |
    | Goal        | server_consolidation                 |
    | Strategy    | vm_workload_consolidation            |
    | Audit Scope | []                                   |
    +-------------+--------------------------------------+
  4. 确认已创建了 audit 模板:

    $ openstack optimize audittemplate list

    输出示例

    +----------------------+-----------------------------+
    | Goal                 | Strategy                    |
    +----------------------+-----------------------------+
    | server_consolidation | vm_workload_consolidation   |
    +----------------------+-----------------------------+
  5. 运行基于策略 vm_workload_consolidation 的审计模板和目标 server_consolidation 的审计。使用适合您环境的值更新策略参数。

    Example

    在这个审核中,使用 WorkLoadConsolidation audit 模板,并使用 workload_balance 策略检查 CPU 用量:

    $ openstack optimize audit create -a WorkLoadConsolidation

    有关此策略使用的参数的更多信息,请参阅 虚拟机工作负载整合策略

    输出示例

    +---------------+------------------------------------------------------+
    | Field         | Value                                                |
    +---------------+------------------------------------------------------+
    | UUID          | bdb0edfa-344a-4897-a7fd-3b1994d87db7                 |
    | Name          | vm_workload_consolidation-2025-07-11T19:23:52.285726 |
    | Created At    | 2025-07-11T19:23:52.296188+00:00                     |
    | Updated At    | None                                                 |
    | Deleted At    | None                                                 |
    | State         | PENDING                                              |
    | Audit Type    | ONESHOT                                              |
    | Parameters    | {'period': 3600, 'granularity': 300}                 |
    | Interval      | None                                                 |
    | Goal          | server_consolidation                                 |
    | Strategy      | vm_workload_consolidation                            |
    | Audit Scope   | []                                                   |
    | Auto Trigger  | False                                                |
    | Next Run Time | None                                                 |
    | Hostname      | None                                                 |
    | Start Time    | None                                                 |
    | End Time      | None                                                 |
    | Force         | False                                                |
    +---------------+------------------------------------------------------+
  6. 确认 Optimize 服务运行审计:

    $ openstack optimize audit list

    输出示例

    如果审计 状态 的值为 SUCCEEDED,则审计运行并创建了操作计划:

    +----------------------------+-----------+-----------------------------+
    | UUID                       | State     | Strategy                    |
    +----------------------------+-----------+-----------------------------+
    | bdb0edfa-344a-4897-a7fd-   | SUCCEEDED | vm_workload_consolidation   |
    | 3b1994d87db7               |           |                             |
    +----------------------------+-----------+-----------------------------+
  7. 检查操作计划。

    Example

    $ openstack optimize actionplan list \
    --audit bdb0edfa-344a-4897-a7fd-3b1994d87db7

    输出示例

    在本例中,全局 efficacyLive_migrations_count: 50.00 %。这个值表示,如果您执行操作计划,计算服务将迁移当前运行的实例的 50%:

    +---------------------------+-------------+----------------------------+
    | UUID                      | State       | Global efficacy            |
    +---------------------------+-------------+----------------------------+
    | 71bb6d02-50a9-4e18-b030-  | RECOMMENDED | Released_nodes_ratio:      |
    | c070d5b36cde              |             | 50.00 %                    |
    |                           |             |                            |
    +---------------------------+-------------+----------------------------+
  8. 列出操作计划中包含的操作。

    Example

    $ openstack optimize action list \
    --action-plan 71bb6d02-50a9-4e18-b030-c070d5b36cde

    输出示例

    在本例中,操作计划包含一个操作,迁移

    +-----------------------------+---------+---------------------------+
    | UUID                        | State   | Action                    |
    +-----------------------------+---------+---------------------------+
    | 7207af7a-569f-4d72-9a9a-    | PENDING | change_nova_service_state |
    | 0be7f9c9b175                |         |                           |
    | 29404127-f9ad-4124-b3d3-    | PENDING | migrate                   |
    | 497420f46e6b                |         |                           |
    | c6cb91d7-26e8-4864-8a5c-    | PENDING | migrate                   |
    | 5ebfe23d6c91                |         |                           |
    +-----------------------------+---------+---------------------------+
  9. 您可以查看更多有关操作的详情:

    Example

    $ openstack optimize action show 7207af7a-569f-4d72-9a9a-0be7f9c9b175

    输出示例

    在本例中,操作计划将把 CPU 使用率高负载的其中一个实例实时迁移到实例 CPU 使用量较低的 Compute 节点。

    +-------------+--------------------------------------------------------+
    | Field       | Value                                                  |
    +-------------+--------------------------------------------------------+
    | UUID        | 7207af7a-569f-4d72-9a9a-0be7f9c9b175                   |
    | Created At  | 2025-07-11T19:23:52+00:00                              |
    | Updated At  | None                                                   |
    | Deleted At  | None                                                   |
    | Parents     | []                                                     |
    | State       | PENDING                                                |
    | Action Plan | 71bb6d02-50a9-4e18-b030-c070d5b36cde                   |
    | Action      | change_nova_service_state                              |
    | Parameters  | {'state': 'disabled', 'disabled_reason':               |
    |             | 'watcher_disabled', 'resource_name':                   |
    |             | 'compute1.ctlplane.localdomain', 'resource_id':        |
    |             | '87254b5a-257b-48ea-aee0-0d4189d84fc7'}                |
    | Description | Disables or enables the nova-compute service.A         |
    |             | disabled nova-compute service can not be selected by   |
    |             | the nova for future deployment of new server.          |
    +-------------+--------------------------------------------------------+
  10. 执行操作计划。

    Example

    $ openstack optimize actionplan start \
    71bb6d02-50a9-4e18-b030-c070d5b36cde

    输出示例

    +---------------------+------------------------------------------------+
    | Field               | Value                                          |
    +---------------------+------------------------------------------------+
    | UUID                | 71bb6d02-50a9-4e18-b030-c070d5b36cde           |
    | Created At          | 2025-07-11T19:23:52+00:00                      |
    | Updated At          | 2025-07-11T19:30:45+00:00                      |
    | Deleted At          | None                                           |
    | Audit               | bdb0edfa-344a-4897-a7fd-3b1994d87db7           |
    | Strategy            | vm_workload_consolidation                      |
    | State               | PENDING                                        |
    | Efficacy indicators | [{'name': 'compute_nodes_count',               |
    |                     | 'description': 'The total number of enabled    |
    |                     | compute nodes.', 'unit': None, 'value': 2.0},  |
    |                     | {'name': 'released_compute_nodes_count',       |
    |                     | 'description': 'The number of compute nodes to |
    |                     | be released.', 'unit': None, 'value': 1.0},    |
    |                     | {'name': 'instance_migrations_count',          |
    |                     | 'description': 'The number of VM migrations to |
    |                     | be performed.', 'unit': None, 'value': 2.0}]   |
    | Global efficacy     | [{'name': 'released_nodes_ratio',              |
    |                     | 'description': 'Ratio of released compute      |
    |                     | nodes divided by the total number of enabled   |
    |                     | compute nodes.', 'unit': '%', 'value': 50.0}]  |
    | Hostname            | None                                           |
    +---------------------+------------------------------------------------+
  11. 确认操作是否成功。

    Example

    $ openstack optimize action list \
    --action-plan 71bb6d02-50a9-4e18-b030-c070d5b36cde

    输出示例

    +-----------+----------------------------+---------------------------+
    | State     | Action Plan                | Action                    |
    +-----------+----------------------------+---------------------------+
    | SUCCEEDED | 71bb6d02-50a9-4e18-b030-   | change_nova_service_state |
    |           | c070d5b36cde               |                           |
    | SUCCEEDED | 71bb6d02-50a9-4e18-b030-   | migrate                   |
    |           | c070d5b36cde               |                           |
    | SUCCEEDED | 71bb6d02-50a9-4e18-b030-   | migrate                   |
    |           | c070d5b36cde               |                           |
    +-----------+----------------------------+---------------------------+
  12. 确认 CPU 使用量较重的实例已迁移到不同的 Compute 节点:

    $ openstack server list --long

    输出示例

    在本例中,实例 test01test03 现在在不同节点 compute2 上运行:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test04 | compute2.ctlplane.localdomain |
    | test03 | compute2.ctlplane.localdomain |
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute2.ctlplane.localdomain |
    +--------+-------------------------------+
  13. 退出 openstackclient pod:

    $ exit

4.3. 稳定多个工作负载

使用带有 工作负载稳定策略的 Optimize 服务(watcher)在物理主机 CPU 或 RAM 利用率百分比超过指定阈值时移动虚拟机实例工作负载。迁移的实例应该使主机的工作负载大约是 OpenShift (RHOSO)集群中红帽 OpenStack 服务中所有 Compute 节点的平均工作负载。

本主题还演示了如何在建立多个工作负载时使用 OpenStack Dashboard (horizon)。

Expand
表 4.3. 目标和策略演示了
目标策略

workload_balancing

workload_stabilization

先决条件

  • 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
  • 您至少创建了在不同节点上运行的两个实例。
  • 您已在工作站上安装了 Dashboard 服务(horizon)。
  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 确保您位于分配了 Admin 角色的项目中:

    Dashboard Admin menu

  2. 单击 Compute 菜单,然后选择 Instances

    Compute menu

  3. 验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:

    在本例中,在 compute1 上运行的 test01test03 实例具有大量 CPU 负载。使用带有工作负载稳定(stabilization)策略的 Optimize 服务,将至少一个实例实时迁移到具有更多容量的 Compute 节点,而无需用户中断:

    Instances panel

  4. Admin 选项卡:

    Admin tab

  5. Optimization 菜单,然后选择 Audit Templates

    Optimization panel

  6. 审计模板 面板中,单击 Create Template

    Create Template button

    此时会显示 Create Audit Template 对话框。

  7. 创建名为 WorkLoadStabilization审计模板,选择目标 工作负载负载平衡,然后选择策略 Workload stabilization。完成后,单击 Create Audit Template 按钮。

    Create Audit Template dialog box

  8. 单击 Audits 子选项卡,然后单击 Create Audit 按钮。

    Audits panel

    此时会显示 Create Audit 对话框。

  9. 选择以下值,然后点击 Create Audit 按钮:

    1. 审计模板 中,选择 WorkLoadStabilization
    2. 审计类型 中,选择 CONTINUOUS
    3. Interval 中,输入 180

      Create Audit Template dialog box

  10. 审计 的 UUID,以查看为新审计创建的操作计划。

    Audits panel

  11. 单击操作计划的 UUID,以查看更多详细信息。

    Action plan

  12. 单击 相关 Actions 下的 UUID。

    Action plan

    Actions 面板中,查看有关推荐的操作的更多信息。

    在本例中,test01 实例(CPU 负载过重的实例)将实时迁移从 compute1 节点到 compute2 节点。

    Actions panel

  13. 检查完操作后,点 Action Plan 子菜单:

    Action plan

  14. Action Plans 面板中,在 RECOMMENDED 操作计划中,单击 Start Action Plan 按钮:

    Action plan

    State 的值更改为 ONGOING

    监控 Action Plans 面板,直到 State 显示 SUCCEEDED 值。

  15. 单击 Compute 菜单,然后选择 Instances

    Compute menu

  16. 确认 CPU 使用量较重的实例已迁移到不同的 Compute 节点。

    在本例中,实例 test01 现在在不同节点上运行,compute2

    Instances panel

  17. 单击 Optimization 菜单,然后选择 Audits

    Compute menu

  18. 审计 面板中,从 Go to Action Plan 下拉菜单中选择 Cancel Audit 以停止 CONTINUOUS 审计。

    Audits panel

4.4. 平衡单个实例工作负载

使用 Optimize 服务(watcher)和 工作 负载平衡策略,在物理主机 CPU 或 RAM 利用率百分比超过指定阈值时移动虚拟机实例工作负载。所迁移的实例应该会导致主机的工作负载大约是 OpenShift (RHOSO)集群中红帽 OpenStack 服务中所有 Compute 节点的平均工作负载。

Expand
表 4.4. 目标和策略演示了
目标策略

workload_balancing

workload_balance

先决条件

  • 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
  • 您的 RHOSO 环境至少包含两个 Compute 节点,每个节点至少运行一个实例。
  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 从您的工作站访问 OpenStackClient pod 的远程 shell:

    $ oc rsh -n openstack openstackclient
  2. 验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:

    $ openstack server list --long

    输出示例

    在本例中,在 compute1 上运行的 test01test03 实例具有大量 CPU 负载。我们希望将 Optimize 服务与工作负载平衡策略一起使用,以在没有用户中断的情况下将至少一个实例实时迁移到具有更多容量的 Compute 节点:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test04 | compute2.ctlplane.localdomain |
    | test03 | compute1.ctlplane.localdomain |
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute1.ctlplane.localdomain |
    +--------+-------------------------------+
  3. 创建使用 strategy、workload_balance 和目标 workload_balancing 的审计模板。

    Example

    在本例中,audit 模板名为 WorkLoadBalance

    $ openstack optimize audittemplate create -s workload_balance \
    WorkLoadBalance workload_balancing

    输出示例

    +-------------+--------------------------------------+
    | Field       | Value                                |
    +-------------+--------------------------------------+
    | UUID        | 5990155a-e3f2-46f8-a81e-c87d0b2f09a2 |
    | Created At  | 2025-07-03T14:05:23.231411+00:00     |
    | Updated At  | None                                 |
    | Deleted At  | None                                 |
    | Description | None                                 |
    | Name        | WorkLoadBalance                      |
    | Goal        | workload_balancing                   |
    | Strategy    | workload_balance                     |
    | Audit Scope | []                                   |
    +-------------+--------------------------------------+
  4. 确认已创建了 audit 模板:

    $ openstack optimize audittemplate list

    输出示例

    +----------------------+------------------+
    | Goal                 | Strategy         |
    +----------------------+------------------+
    | workload_balancing   | workload_balance |
    +----------------------+------------------+
  5. 运行基于策略、workload_balance 和目标 workload_balancing 的审计模板。使用适合您环境的值更新策略参数。

    Example

    在这个审核中,使用了 WorkLoadBalance 审计模板,并使用带有不同值的 workload_balance 策略参数来检查 CPU 用量:

    $ openstack optimize audit create -a WorkLoadBalance -p granularity=30 \
    -p threshold=20 -p period=300 -p metrics=instance_cpu_usage

    有关此策略使用的参数的更多信息,请参阅 Workload balance 迁移策略

    输出示例

    +---------------+------------------------------------------------------+
    | Field         | Value                                                |
    +---------------+------------------------------------------------------+
    | UUID          | ad815d54-5b7d-4562-aa12-17e1b64d0868                 |
    | Name          | workload_balance-2025-07-03T15:55:08.016161          |
    | Created At    | 2025-07-03T15:55:08.026706+00:00                     |
    | Updated At    | None                                                 |
    | Deleted At    | None                                                 |
    | State         | PENDING                                              |
    | Audit Type    | ONESHOT                                              |
    | Parameters    | {'granularity': 30, 'threshold': 20, 'period': 300,  |
    |               | 'metrics': 'instance_cpu_usage'}                     |
    | Interval      | None                                                 |
    | Goal          | workload_balancing                                   |
    | Strategy      | workload_balance                                     |
    | Audit Scope   | []                                                   |
    | Auto Trigger  | False                                                |
    | Next Run Time | None                                                 |
    | Hostname      | None                                                 |
    | Start Time    | None                                                 |
    | End Time      | None                                                 |
    | Force         | False                                                |
    +---------------+------------------------------------------------------+
  6. 确认 Optimize 服务运行审计:

    $ openstack optimize audit list

    输出示例

    如果审计 状态 的值为 SUCCEEDED,则审计运行并创建了操作计划:

    +--------------------------------------+-----------+------------------+
    | UUID                                 | State     | Strategy         |
    +--------------------------------------+-----------+------------------+
    | ad815d54-5b7d-4562-aa12-17e1b64d0868 | SUCCEEDED | workload_balance |
    +--------------------------------------+-----------+------------------+
  7. 检查操作计划。

    Example

    $ openstack optimize actionplan list \
    --audit ad815d54-5b7d-4562-aa12-17e1b64d0868

    输出示例

    在本例中,全局 efficacyLive_migrations_count: 25.00 %。这个值表示,如果您执行操作计划,计算服务将迁移当前运行的实例的 25%:

    +---------------------------+-------------+----------------------------+
    | UUID                      | State       | Global efficacy            |
    +---------------------------+-------------+----------------------------+
    | f40dfa4e-1b96-4883-b85f-  | RECOMMENDED | Live_migrations_count:     |
    | 3bfa73554359              |             | 25.00 %                    |
    |                           |             |                            |
    +---------------------------+-------------+----------------------------+
  8. 列出操作计划中包含的操作。

    Example

    $ openstack optimize action list \
    --action-plan f40dfa4e-1b96-4883-b85f-3bfa73554359

    输出示例

    在本例中,操作计划包含一个操作,迁移

    +--------------------------------------+---------+---------+
    | UUID                                 | State   | Action  |
    +--------------------------------------+---------+---------+
    | 9a510bf9-ebac-450d-a4ea-a10b66d6d869 | PENDING | migrate |
    +--------------------------------------+---------+---------+
  9. 您可以查看更多有关操作的详情:

    Example

    $ openstack optimize action show 9a510bf9-ebac-450d-a4ea-a10b66d6d869

    输出示例

    在本例中,操作计划将把 CPU 使用率高负载的其中一个实例实时迁移到实例 CPU 使用量较低的 Compute 节点。

    +-------------+--------------------------------------------------------+
    | Field       | Value                                                  |
    +-------------+--------------------------------------------------------+
    | UUID        | 9a510bf9-ebac-450d-a4ea-a10b66d6d869                   |
    | Created At  | 2025-07-03T15:55:08+00:00                              |
    | Updated At  | None                                                   |
    | Deleted At  | None                                                   |
    | Parents     | []                                                     |
    | State       | PENDING                                                |
    | Action Plan | f40dfa4e-1b96-4883-b85f-3bfa73554359                   |
    | Action      | migrate                                                |
    | Parameters  | {'migration_type': 'live', 'source_node':              |
    |             | 'compute1.ctlplane.localdomain', 'destination_node':   |
    |             | 'compute2.ctlplane.localdomain', 'resource_name':      |
    |             | 'test03', 'resource_id':                               |
    |             | 'd6ae1c7c-8e69-45ae-92b3-6218b8c1570b'}                |
    | Description | Moving a VM instance from source_node to               |
    |             | destination_node                                       |
    +-------------+--------------------------------------------------------+
  10. 执行操作计划。

    Example

    $ openstack optimize actionplan start \
    f40dfa4e-1b96-4883-b85f-3bfa73554359

    输出示例

    +---------------------+------------------------------------------------+
    | Field               | Value                                          |
    +---------------------+------------------------------------------------+
    | UUID                | f40dfa4e-1b96-4883-b85f-3bfa73554359           |
    | Created At          | 2025-07-03T15:55:08+00:00                      |
    | Updated At          | 2025-07-03T16:00:23+00:00                      |
    | Deleted At          | None                                           |
    | Audit               | f878bd64-96bc-4063-97a6-dc7500edfb55           |
    | Strategy            | workload_balance                               |
    | State               | PENDING                                        |
    | Efficacy indicators | [{'name': 'instance_migrations_count',         |
    |                     | 'description': 'The number of VM migrations to |
    |                     | be performed.', 'unit': None, 'value': 1.0},   |
    |                     | {'name': 'instances_count', 'description':     |
    |                     | 'The total number of audited instances in      |
    |                     | strategy.', 'unit': None, 'value': 4.0}]       |
    | Global efficacy     | [{'name': 'live_migrations_count',             |
    |                     | 'description': 'Ratio of migrated virtual      |
    |                     | machines to audited virtual machines', 'unit': |
    |                     | '%', 'value': 25.0}]                           |
    | Hostname            | None                                           |
    +---------------------+------------------------------------------------+
  11. 确认操作是否成功。

    Example

    $ openstack optimize action list \
    --action-plan dfdcb491-89c5-4c07-a5ed-65d2085c488c

    输出示例

    +------------------+---------+-----------+-------------------+---------+
    | UUID             | Parents | State     | Action Plan       | Action  |
    +------------------+---------+-----------+-------------------+---------+
    | 9a510bf9-ebac-   | []      | SUCCEEDED | f40dfa4e-1b96-    | migrate |
    | 450d-a4ea-       |         |           | 4883-b85f-        |         |
    | a10b66d6d869     |         |           | 3bfa73554359      |         |
    +------------------+---------+-----------+-------------------+---------+
  12. 确认 CPU 使用量较重的实例已迁移到不同的 Compute 节点:

    $ openstack server list --long

    输出示例

    在本例中,实例 test03 现在在不同节点上运行,compute2

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test04 | compute2.ctlplane.localdomain |
    | test03 | compute2.ctlplane.localdomain |
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute1.ctlplane.localdomain |
    +--------+-------------------------------+
  13. 退出 openstackclient pod:

    $ exit

4.5. 简化工作负载迁移

使用 Optimize 服务(watcher)与 区域 迁移策略,在不中断用户的情况下有效地迁移多个实例,并在 OpenShift (RHOSO)环境中进行硬件维护的最小停机时间。

注意

区域 迁移策略中的术语区域指的是用户定义的计算节点和存储池集合。zone 不引用 Openstack 可用区。

Expand
表 4.5. 目标和策略演示了
目标策略

zone_migration

server_consolidation

先决条件

  • 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
  • 您的 RHOSO 环境至少包含两个 Compute 节点,每个节点至少运行一个实例。
  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 从您的工作站访问 OpenStackClient pod 的远程 shell:

    $ oc rsh -n openstack openstackclient
  2. 验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:

    $ openstack server list --long

    输出示例

    在本例中,两个实例在 compute1 上运行,一个实例在 compute2 上运行。compute1 节点计划进行维护,因此我们希望使用带有区迁移策略的 Optimize 服务,在不中断用户的情况下将实例实时迁移到其他 Compute 节点:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test03 | compute2.ctlplane.localdomain |
    | test02 | compute1.ctlplane.localdomain |
    | test01 | compute1.ctlplane.localdomain |
    +--------+-------------------------------+
  3. 创建使用 strategy、zone_migration 和目标 hardware_maintenance 的审计模板。

    Example

    在本例中,audit 模板名为 ZoneMigration

    $ openstack optimize audittemplate create -s zone_migration ZoneMigration hardware_maintenance

    有关此策略使用的参数的更多信息,请参阅 区域迁移

    输出示例

    +-------------+--------------------------------------+
    | Field       | Value                                |
    +-------------+--------------------------------------+
    | UUID        | 519d3a5e-30b2-48ae-aabf-83b246a12e13 |
    | Created At  | 2025-07-04T12:34:54.691287+00:00     |
    | Updated At  | None                                 |
    | Deleted At  | None                                 |
    | Description | None                                 |
    | Name        | ZoneMigration                        |
    | Goal        | hardware_maintenance                 |
    | Strategy    | zone_migration                       |
    | Audit Scope | []                                   |
    +-------------+--------------------------------------+
  4. 确认已创建了 audit 模板:

    $ openstack optimize audittemplate list

    输出示例

    +----------------------+------------------+
    | Goal                 | Strategy         |
    +----------------------+------------------+
    | hardware_maintenance | zone_migration   |
    +----------------------+------------------+
  5. 运行基于 strategy、zone_migration 和目标 hardware_maintenance 的审计模板。使用适合您环境的值更新策略参数。

    Example

    本例中使用 ZoneMigration audit 模板,具有以下策略参数值:

    • src_node: 包含值 compute1,这是执行维护的节点。
    • dst_node: 包含值 compute2,这是将迁移 compute1 上运行的实例的节点。

      $ openstack optimize audit create -a ZoneMigration -p compute_nodes=\
      '[{"src_node":"compute1.ctlplane.localdomain", "dst_node":"compute2.ctlplane.localdomain"}]'

      输出示例

      +---------------+------------------------------------------------------+
      | Field         | Value                                                |
      +---------------+------------------------------------------------------+
      | UUID          | 9e9eeb70-63bd-427e-a5a6-a2f049f1bc73                 |
      | Name          | zone_migration-2025-07-04T12:38:25.151645            |
      | Created At    | 2025-07-04T12:38:25.163096+00:00                     |
      | Updated At    | None                                                 |
      | Deleted At    | None                                                 |
      | State         | PENDING                                              |
      | Audit Type    | ONESHOT                                              |
      | Parameters    | {'compute_nodes': [{'src_node': 'compute1.ctlplane.  |
      |               | localdomain', 'dst_node': 'compute2.ctlplane.        |
      |               | localdomain'}], 'parallel_total': 6,                 |
      |               | 'parallel_per_node':                                 |
      |               | 2, 'parallel_per_pool': 2, 'with_attached_volume':   |
      |               | False}                                               |
      | Interval      | None                                                 |
      | Goal          | hardware_maintenance                                 |
      | Strategy      | zone_migration                                       |
      | Audit Scope   | []                                                   |
      | Auto Trigger  | False                                                |
      | Next Run Time | None                                                 |
      | Hostname      | None                                                 |
      | Start Time    | None                                                 |
      | End Time      | None                                                 |
      | Force         | False                                                |
      +---------------+------------------------------------------------------+
  6. 确认 Optimize 服务创建了审计:

    $ openstack optimize audit list

    输出示例

    如果 State 的值为 SUCCEEDED,则审计运行并创建了操作计划:

    +--------------------------------------+-----------+------------------+
    | UUID                                 | State     | Strategy         |
    +--------------------------------------+-----------+------------------+
    | 9e9eeb70-63bd-427e-a5a6-a2f049f1bc73 | SUCCEEDED | zone_migration   |
    +--------------------------------------+-----------+------------------+
  7. 检查操作计划。

    Example

    $ openstack optimize actionplan list \
    --audit  9e9eeb70-63bd-427e-a5a6-a2f049f1bc73 \
    -c UUID -c State -c "Global efficacy"

    输出示例

    在本例中,Live_instance_migrate_ratio 代表在操作计划中实时迁移的实例百分比:操作计划中的实时迁移数量除以用户输入的实例数量。例如,如果 src_node 有 4 个活跃的实例,但 2 在操作计划中迁移,则比率为 50%

    +---------------------------+-------------+----------------------------+
    | UUID                      | State       | Global efficacy            |
    +---------------------------+-------------+----------------------------+
    | 40305df2-c240-464b-ac56-  | RECOMMENDED | Live_instance_migrate_rati |
    | 62e51bf139ef              |             | o: 100.00 %                |
    |                           |             | Cold_instance_migrate_rati |
    |                           |             | o: 0.00 %                  |
    |                           |             | Volume_migrate_ratio: 0.00 |
    |                           |             | %                          |
    |                           |             | Volume_update_ratio: 0.00  |
    |                           |             | %                          |
    |                           |             |                            |
    +---------------------------+-------------+----------------------------+
  8. 列出操作计划中包含的操作。

    Example

    $ openstack optimize action list \
    --action-plan 40305df2-c240-464b-ac56-62e51bf139ef \
    -c 'UUID' -c 'State' -c 'Action'

    输出示例

    在本例中,操作计划包含两个用于迁移两个实例的操作:

    +--------------------------------------+---------+---------+
    | UUID                                 | State   | Action  |
    +--------------------------------------+---------+---------+
    | 680e6152-e163-443d-9bd4-178b73494aa4 | PENDING | migrate |
    | 51a04b16-7231-4001-b3be-d5125bcd2365 | PENDING | migrate |
    +--------------------------------------+---------+---------+
  9. 您可以查看更多有关操作的详情:

    Example

    在本例中,为 migrate 操作请求更详细的信息,即 680e6152-e163-443d-9bd4-178b73494aa4:

    $ openstack optimize action show 680e6152-e163-443d-9bd4-178b73494aa4

    输出示例

    在本例中,操作计划会将 test01 实例从 compute1 节点迁移到 compute2 节点:

    +-------------+--------------------------------------------------------+
    | Field       | Value                                                  |
    +-------------+--------------------------------------------------------+
    | UUID        | 680e6152-e163-443d-9bd4-178b73494aa4                   |
    | Created At  | 2025-07-04T12:38:26+00:00                              |
    | Updated At  | None                                                   |
    | Deleted At  | None                                                   |
    | Parents     | []                                                     |
    | State       | PENDING                                                |
    | Action Plan | 40305df2-c240-464b-ac56-62e51bf139ef                   |
    | Action      | migrate                                                |
    | Parameters  | {'migration_type': 'live', 'source_node':              |
    |             | 'compute1.ctlplane.localdomain', 'resource_name':      |
    |             | 'test01', 'destination_node':                          |
    |             | 'compute2.ctlplane.localdomain', 'resource_id':        |
    |             | 'd6ae1c7c-8e69-45ae-92b3-6218b8c1570b'}                |
    | Description | Moving a VM instance from source_node to               |
    |             | destination_node                                       |
    +-------------+--------------------------------------------------------+
  10. 执行操作计划。

    Example

    $ openstack optimize actionplan start \
    40305df2-c240-464b-ac56-62e51bf139ef

    输出示例

    在本例中,两个实例都从 compute1 实时迁移到 compute2

    +---------------------+------------------------------------------------+
    | Field               | Value                                          |
    +---------------------+------------------------------------------------+
    | UUID                | 40305df2-c240-464b-ac56-62e51bf139ef           |
    | Created At          | 2025-07-04T12:38:26+00:00                      |
    | Updated At          | 2025-07-04T13:06:53+00:00                      |
    | Deleted At          | None                                           |
    | Audit               | 9e9eeb70-63bd-427e-a5a6-a2f049f1bc73           |
    | Strategy            | zone_migration                                 |
    | State               | PENDING                                        |
    | Efficacy indicators | [{'name': 'live_migrate_instance_count',       |
    |                     | 'description': 'The number of instances        |
    |                     | actually live migrated.', 'unit': None,        |
    |                     | 'value': 2.0}, {'name':                        |
    |                     | 'planned_live_migrate_instance_count',         |
    |                     | 'description': 'The number of instances        |
    |                     | planned to live migrate.', 'unit': None,       |
    |                     | 'value': 2.0}, {'name':                        |
    |                     | 'cold_migrate_instance_count', 'description':  |
    |                     | 'The number of instances actually cold         |
    |                     | migrated.', 'unit': None, 'value': 0.0},       |
    |                     | {'name':                                       |
    |                     | 'planned_cold_migrate_instance_count',         |
    |                     | 'description': 'The number of instances        |
    |                     | planned to cold migrate.', 'unit': None,       |
    |                     | 'value': 0.0}, {'name':                        |
    |                     | 'volume_migrate_count', 'description': 'The    |
    |                     | number of detached volumes actually            |
    |                     | migrated.', 'unit': None, 'value': 0.0},       |
    |                     | {'name': 'planned_volume_migrate_count',       |
    |                     | 'description': 'The number of detached volumes |
    |                     | planned to migrate.', 'unit': None, 'value':   |
    |                     | 0.0}, {'name': 'volume_update_count',          |
    |                     | 'description': 'The number of attached volumes |
    |                     | actually migrated.', 'unit': None, 'value':    |
    |                     | 0.0}, {'name': 'planned_volume_update_count',  |
    |                     | 'description': 'The number of attached volumes |
    |                     | planned to migrate.', 'unit': None, 'value':   |
    |                     | 0.0}]                                          |
    | Global efficacy     | [{'name': 'live_instance_migrate_ratio',       |
    |                     | 'description': 'Ratio of actual live migrated  |
    |                     | instances to planned live migrate instances.', |
    |                     | 'unit': '%', 'value': 100.0}, {'name':         |
    |                     | 'cold_instance_migrate_ratio', 'description':  |
    |                     | 'Ratio of actual cold migrated instances to    |
    |                     | planned cold migrate instances.', 'unit': '%', |
    |                     | 'value': 0}, {'name': 'volume_migrate_ratio',  |
    |                     | 'description': 'Ratio of actual detached       |
    |                     | volumes migrated to planned detached volumes   |
    |                     | migrate.', 'unit': '%', 'value': 0}, {'name':  |
    |                     | 'volume_update_ratio', 'description': 'Ratio   |
    |                     | of actual attached volumes migrated to planned |
    |                     | attached volumes migrate.', 'unit': '%',       |
    |                     | 'value': 0}]                                   |
    | Hostname            | None                                           |
    +---------------------+------------------------------------------------+

    确认操作是否成功。

    Example

    $ openstack optimize action list \
    --action-plan 40305df2-c240-464b-ac56-62e51bf139ef

    输出示例

    +--------------------------------------+-----------+---------+
    | UUID                                 | State     | Action  |
    +--------------------------------------+-----------+---------+
    | 680e6152-e163-443d-9bd4-178b73494aa4 | SUCCEEDED | migrate |
    | 51a04b16-7231-4001-b3be-d5125bcd2365 | SUCCEEDED | migrate |
    +--------------------------------------+-----------+---------+
  11. 确认所有实例都已迁移到不同的 Compute 节点:

    $ openstack server list --long

    输出示例

    在本例中,compute1 上运行的两个实例现在在 compute2 上运行:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test03 | compute2.ctlplane.localdomain |
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute2.ctlplane.localdomain |
    +--------+-------------------------------+
  12. 退出 openstackclient pod:

    $ exit

4.6. 为计划维护准备 Compute 节点

使用带有 主机维护策略的 Optimize 服务(watcher)将 Red Hat OpenStack Services on OpenShift (RHOSO)环境中的所有实例从您的 Red Hat OpenStack Services (RHOSO)环境中迁移,以便在用户中断的情况下执行主机维护。如果没有提供备份节点,则 Optimize 服务通过依赖 nova-scheduler 来迁移所有实例。在这两种用例中,计算维护节点将被禁用。

注意

在计划维护窗口中使用主机维护策略,其中负载较低,以最大程度降低对工作负载的影响。运行审计时,请确保不会更改默认的 audit_typeONESHOT

Expand
表 4.6. 目标和策略演示了
目标策略

cluster_maintaining

host_maintenance

先决条件

  • 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
  • 您至少有两个 Compute 节点:

    • 一个 Compute 节点,至少有一个实例正在运行。
    • 充当备份节点的第二个 Compute 节点。
  • 在工作站上安装了 oc 命令行工具。
  • 以具有 cluster-admin 权限的用户身份登录到可访问 RHOSO 控制平面的工作站。

步骤

  1. 从您的工作站访问 OpenStackClient pod 的远程 shell:

    $ oc rsh -n openstack openstackclient
  2. 验证至少有两个计算节点和至少一个实例。

    $ openstack server list --long

    输出示例

    在本例中,一个实例在 compute1 上运行,一个实例在 compute2 上运行。compute1 节点计划进行维护,因此我们希望使用带有主机维护策略的 Optimize 服务,将实例从 compute1 迁移到 compute2,而无需用户中断:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute1.ctlplane.localdomain |
    +--------+-------------------------------+
  3. 创建使用 strategy、host_maintenance 和目标 cluster_maintaining 的审计模板。

    Example

    在本例中,审计模板名为 HostMaintenance

    $ openstack optimize audittemplate create -s host_maintenance \
    HostMaintenance cluster_maintaining

    输出示例

    +-------------+--------------------------------------+
    | Field       | Value                                |
    +-------------+--------------------------------------+
    | UUID        | 96c46352-352d-43eb-97ef-4bf3235d9574 |
    | Created At  | 2025-07-04T14:52:19.919765+00:00     |
    | Updated At  | None                                 |
    | Deleted At  | None                                 |
    | Description | None                                 |
    | Name        | HostMaintenance                      |
    | Goal        | cluster_maintaining                  |
    | Strategy    | host_maintenance                     |
    | Audit Scope | []                                   |
    +-------------+--------------------------------------+
  4. 确认已创建了 audit 模板:

    $ openstack optimize audittemplate list

    输出示例

    +----------------------+------------------+
    | Goal                 | Strategy         |
    +----------------------+------------------+
    | cluster_maintaining  | host_maintenance |
    +----------------------+------------------+
  5. 运行基于策略、host_maintenance 和目标 cluster_maintaining 的审计,它使用审计模板。使用适合您环境的值更新策略参数。

    Example

    本例中使用 HostMaintenance audit 模板,同时为维护计划提供 compute1 主机:

    $ openstack optimize audit create -a HostMaintenance \
    -p maintenance_node=compute1.ctlplane.localdomain

    有关此策略使用的参数的更多信息,请参阅 主机维护策略

    输出示例

    +---------------+-------------------------------------------------------+
    | Field         | Value                                                 |
    +---------------+-------------------------------------------------------+
    | UUID          | 8cfb4abe-3720-4af2-a8a9-fba8fff1f442                  |
    | Name          | host_maintenance-2025-07-04T14:54:58.410413           |
    | Created At    | 2025-07-04T14:54:58.419668+00:00                      |
    | Updated At    | None                                                  |
    | Deleted At    | None                                                  |
    | State         | PENDING                                               |
    | Audit Type    | ONESHOT                                               |
    | Parameters    | {'maintenance_node': 'compute1.ctlplane.localdomain'} |
    | Interval      | None                                                  |
    | Goal          | cluster_maintaining                                   |
    | Strategy      | host_maintenance                                      |
    | Audit Scope   | []                                                    |
    | Auto Trigger  | False                                                 |
    | Next Run Time | None                                                  |
    | Hostname      | None                                                  |
    | Start Time    | None                                                  |
    | End Time      | None                                                  |
    | Force         | False                                                 |
    +---------------+-------------------------------------------------------+
  6. 确认 Optimize 服务创建了审计:

    $ openstack optimize audit list

    输出示例

    如果 State 的值为 SUCCEEDED,则审计运行并创建了操作计划:

    +--------------------------------------+-----------+------------------+
    | UUID                                 | State     | Strategy         |
    +--------------------------------------+-----------+------------------+
    | 8cfb4abe-3720-4af2-a8a9-fba8fff1f442 | SUCCEEDED | host_maintenance |
    +--------------------------------------+-----------+------------------+
  7. 检查操作计划。

    Example

    $ openstack optimize actionplan list \
    --audit 8cfb4abe-3720-4af2-a8a9-fba8fff1f442

    输出示例

    +--------------------------------------+-------------+-----------------+
    | UUID                                 | State       | Global efficacy |
    +--------------------------------------+-------------+-----------------+
    | 40017617-7698-4ce7-b5ce-2917ec522a08 | RECOMMENDED |                 |
    +--------------------------------------+-------------+-----------------+
  8. 列出操作计划中包含的操作。

    Example

    $ openstack optimize action list \
    --action-plan 40017617-7698-4ce7-b5ce-2917ec522a08

    输出示例

    在本例中,操作计划包含两个操作:

    +--------------------------------------+---------+---------------------------+
    | UUID                                 | State   | Action                    |
    +--------------------------------------+---------+---------------------------+
    | 19afe53e-4cf4-4b67-b910-92bca5f40186 | PENDING | change_nova_service_state |
    | 6e3154ac-279a-4b26-b993-9a6eea70309b | PENDING | migrate                   |
    +--------------------------------------+---------+---------------------------+
  9. 您可以查看更多有关操作的详细信息。

    Example

    $ openstack optimize action show \
    6e3154ac-279a-4b26-b993-9a6eea70309b

    输出示例

    在本例中,操作计划会将当前在 compute1 节点上运行的实例迁移到 compute2 节点:

    +-------------+--------------------------------------------------------+
    | Field       | Value                                                  |
    +-------------+--------------------------------------------------------+
    | UUID        | 6e3154ac-279a-4b26-b993-9a6eea70309b                   |
    | Created At  | 2025-07-04T14:54:58+00:00                              |
    | Updated At  | None                                                   |
    | Deleted At  | None                                                   |
    | Parents     | ['19afe53e-4cf4-4b67-b910-92bca5f40186']               |
    | State       | PENDING                                                |
    | Action Plan | 40017617-7698-4ce7-b5ce-2917ec522a08                   |
    | Action      | migrate                                                |
    | Parameters  | {'migration_type': 'live', 'source_node':              |
    |             | '87254b5a-257b-48ea-aee0-0d4189d84fc7',                |
    |             | 'resource_name': 'test01', 'resource_id':              |
    |             | '19bb7593-1b6d-43aa-a0a1-f88921fb4b42'}                |
    | Description | Moving a VM instance from source_node to               |
    |             | destination_node                                       |
    +-------------+--------------------------------------------------------+

    Example

    $ openstack optimize action show \
    19afe53e-4cf4-4b67-b910-92bca5f40186

    输出示例

    在本例中,操作计划会将 compute1 节点状态更改为 disabled

    +-------------+--------------------------------------------------------+
    | Field       | Value                                                  |
    +-------------+--------------------------------------------------------+
    | UUID        | 19afe53e-4cf4-4b67-b910-92bca5f40186                   |
    | Created At  | 2025-07-04T14:54:58+00:00                              |
    | Updated At  | None                                                   |
    | Deleted At  | None                                                   |
    | Parents     | []                                                     |
    | State       | PENDING                                                |
    | Action Plan | 40017617-7698-4ce7-b5ce-2917ec522a08                   |
    | Action      | change_nova_service_state                              |
    | Parameters  | {'state': 'disabled', 'disabled_reason':               |
    |             | 'watcher_maintaining', 'resource_name':                |
    |             | 'compute1.ctlplane.localdomain', 'resource_id':        |
    |             | '87254b5a-257b-48ea-aee0-0d4189d84fc7'}                |
    | Description | Disables or enables the nova-compute service.A         |
    |             | disabled nova-compute service can not be selected by   |
    |             | the nova for future deployment of new server.          |
    +-------------+--------------------------------------------------------+
  10. 执行操作计划。

    Example

    $ openstack optimize actionplan start \
    40017617-7698-4ce7-b5ce-2917ec522a08

    输出示例

    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | UUID                | 40017617-7698-4ce7-b5ce-2917ec522a08 |
    | Created At          | 2025-07-04T14:54:58+00:00            |
    | Updated At          | 2025-07-04T15:04:47+00:00            |
    | Deleted At          | None                                 |
    | Audit               | 8cfb4abe-3720-4af2-a8a9-fba8fff1f442 |
    | Strategy            | host_maintenance                     |
    | State               | PENDING                              |
    | Efficacy indicators | []                                   |
    | Global efficacy     | []                                   |
    | Hostname            | None                                 |
    +---------------------+--------------------------------------+
  11. 确认操作是否成功。

    Example

    $ openstack optimize action list \
    --action-plan 40017617-7698-4ce7-b5ce-2917ec522a08

    有关此策略使用的参数的更多信息,请参阅 主机维护策略

    输出示例

    在本例中,实例从 compute1 节点迁移,compute1 的状态被设置为 disabled :

    +--------------------------------------+-----------+---------------------------+
    | UUID                                 | State     | Action                    |
    +--------------------------------------+-----------+---------------------------+
    | 19afe53e-4cf4-4b67-b910-92bca5f40186 | SUCCEEDED | change_nova_service_state |
    | 6e3154ac-279a-4b26-b993-9a6eea70309b | SUCCEEDED | migrate                   |
    +--------------------------------------+-----------+---------------------------+
  12. 确认在维护节点上运行的所有实例都已迁移:

    $ openstack server list --long

    输出示例

    在本例中,在 compute1 节点上运行的实例,test01 现在在 compute2 节点上运行:

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute2.ctlplane.localdomain |
    +--------+-------------------------------+
  13. 确认维护节点已被禁用。

    $ openstack compute service list

    输出示例

    在本例中,compute1 节点的 Statusdisabled

    +-------------------------------+----------+
    | Host                          | Status   |
    +-------------------------------+----------+
    | nova-cell0-conductor-0        | enabled  |
    | nova-scheduler-0              | enabled  |
    | nova-cell1-conductor-0        | enabled  |
    | compute2.ctlplane.localdomain | enabled  |
    | compute1.ctlplane.localdomain | disabled |
    +-------------------------------+----------+
  14. 退出 openstackclient pod:

    $ exit

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部