优化基础架构资源利用率
使用 Optimize 服务(watcher)管理 OpenShift 上 Red Hat OpenStack Services 的基础架构资源利用率
摘要
本指南的内容只是一个技术预览 复制链接链接已复制到粘贴板!
本指南中以 技术预览 形式提供该功能,因此不受红帽完全支持。它只应用于测试,不应部署在生产环境中。如需更多信息,请参阅 技术预览。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
使用 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 创建一个帐户。
- 点击以下链接打开 Create Issue 页面: Create Issue
- 完成 Summary 和 Description 字段。在 Description 字段中,包含文档 URL、章节号以及问题的详细描述。不要修改表单中的任何其他字段。
- 点 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。
| 术语 | 描述 |
|---|---|
| 操作 | 一个 atomic 任务,它允许 Optimize 服务在审计后转换集群的当前状态。 |
| 操作计划 | 指定为满足给定目标而应执行的操作流,并包含预计的全局效率以及一组效率指示器。 |
| Audit | 优化集群的请求。 |
| Audit 模板 | 包含审计的目标,可能包含错误处理设置和自动化设置。 |
| 目标 | 人类可读的、可观察和可衡量的最终结果是实现目标的。 |
| 解决方案 | 执行策略的结果,以及一组提议的操作来实现相关审计的目标。 |
| 策略 | 算法实现,能够为特定目标提供推荐的解决方案。 |
以下工作流描述了 RHOSO 管理员如何使用 Optimize 服务:
确定实现的目标。
例如,若要保存 Compute 节点消耗的能源,可整合虚拟机实例以在较少的节点上运行。
- 创建审计模板,通过使用 Optimize 服务定义执行 RHOSO 环境审计时使用的目标和其他设置。
- (可选)向 audit 模板添加一个策略。
使用审计模板运行 Optimize 服务来审计 RHOSO 环境。
在审计后,Optimize 服务会创建一个基于目标的操作计划。
执行操作计划。
使用操作计划运行 Optimize 服务,例如生成 Compute 服务(nova),以执行实例实时迁移到其他节点。
- 检查云的指标,以确认已改进实现目标。
1.2. 优化服务组件 复制链接链接已复制到粘贴板!
OpenShift (RHOSO)优化服务(watcher)组件的 Red Hat OpenStack 服务托管在托管 RHOSO control plane 的 Red Hat OpenShift Container Platform (RHOCP) worker 节点上。Optimize 服务由以下组件组成:
优化服务(监视)组件
- 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=<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 the0.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_参数查询随机主机;retryfullsearch(从列表中查询每个主机)。默认值为retry。 -
-p retry_count='<number>'- 一个 when-p host_choice='retry'所使用的数字,用于使用的随机查询数。默认值为1。 -
-p period='{"instance":<seconds>,"node":<seconds>}'- 重复间隔时间(以秒为单位),将实例和主机示例分组到聚合中。Optimize 服务(watcher)仅使用最后的时间。instance 和 node 的默认句点分别是720和600秒。
-
2.3.6. 区迁移策略 复制链接链接已复制到粘贴板!
区域迁移策略高效地移动多个虚拟机实例,使用计算服务(nova)实时迁移功能,无需用户中断,且对硬件维护的最小停机时间。
有关如何使用此策略的演示,请参阅 简化工作负载迁移。
区域 迁移策略中的术语区域指的是用户定义的计算节点和存储池集合。zone 不引用 OpenStack 可用区。
要求:
- 至少两个物理主机,充当 Compute 节点。
- 计算服务(nova)执行实时和冷迁移的能力。
用户提供的参数:
-
-p compute_nodes='[{<compute_nodes_array_elements>}'(必需)- 要迁移的 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 控制平面的工作站。
步骤
验证服务端点是否可用:
$ 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 | +----------------------------------+--------------+---------+验证带有 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 服务包括以下步骤:
安装 Optimize service Operator。
注意- 更新用于优化服务凭证的 Secret CR。
- 在现有的 RHOSO control plane 中创建 Optimize 服务。
3.1. 使用 OpenShift 控制台安装 Optimize service Operator 复制链接链接已复制到粘贴板!
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 控制台。
步骤
-
以具有
cluster-admin权限的用户身份登录 OpenShift 控制台。 - 点 Operators → OperatorHub。
在 Filter by keyword 字段中,输入
Watcher。名为
Watcher Operator (技术预览)的 operator 应该会显示Red Hatsource 标签。- 点 Watcher Operator (技术预览)。
- 确保将 Installation 模式设置为 All namespaces in the cluster。
在 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,可独立管理。
步骤
创建一个包含
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为
watcher-operator创建资源:$ oc apply -f watcher-operator.yaml subscription.operators.coreos.com/watcher-operator created确认已安装了
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 控制平面的工作站。
步骤
-
打开
SecretCR 文件(通常称为osp-secret),您用来为初始 RHOSO control plane 部署提供安全访问 RHOSO 服务 pod,例如openstack_service_secret.yaml。 添加一个
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将
<base64_password> 替换为 base64 编码的 32 个字符的密钥。您可以使用以下命令手动生成 base64 编码密码:$ echo -n <password> | base64如需更多信息,请参阅在 OpenShift 上部署 Red Hat OpenStack Services 中的 为 Red Hat OpenStack Services 提供安全访问 OpenShift 服务。
更新
SecretCR:$ 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)包括:
-
创建 RHOSO 用来通过安全 HTTP 连接(HTTPS)访问监视器服务所需的证书。
-
定义
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 控制平面的工作站。
步骤
创建一个
watcher-certificates.yaml文件,其中包含 OpenStack control plane 的正确项目,如openstack,以及集群的正确域,如watcher-internal.openstack.svc.cluster.local。提示您可以运行以下命令来获取集群的正确域:
$ oc get ingresses.config/cluster -o jsonpath={.spec.domain}在
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
-
与内部端点通信:
应用
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在工作站上创建一个名为
watcher.yaml的文件,以定义WatcherCR:apiVersion: watcher.openstack.org/v1beta1 kind: Watcher metadata: name: watcher指定用于 为 Optimize 服务凭证更新
SecretCR 中用来提供对watcher服务 pod 的安全访问的 Secret CR :apiVersion: watcher.openstack.org/v1beta1 kind: Watcher metadata: name: watcher spec: databaseInstance: "openstack" secret: osp-secret apiServiceTemplate: ...在
WatcherCR 文件中,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部署
WatcherCR:$ oc apply -f watcher.yaml -n openstack输出示例
watcher.watcher.openstack.org/watcher configured检查服务状态:
$ oc wait -n openstack --for condition=Ready --timeout=300s Watcher watcherwatcher 指的是 CR 文件中的
kind字段,watcher指的是 CR 文件中的name字段。输出示例
watcher.watcher.openstack.org/watcher condition met
验证
确认 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 | +----------------------------------+------------+-------------+要确认
openstackclientpod 可以与监视服务通信,请验证 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 | +----+-------------------------+---------------------------+--------+确认端点使用 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。
| 目标 | 策略 |
|---|---|
|
|
|
先决条件
- 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
- 您的 RHOSO 环境至少包含两个 Compute 节点,每个节点至少运行一个实例。
-
在工作站上安装了
oc命令行工具。 -
以具有
cluster-admin权限的用户身份登录到可访问 RHOSO 控制平面的工作站。
步骤
从您的工作站访问 OpenStackClient pod 的远程 shell:
$ oc rsh -n openstack openstackclient验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:
$ openstack server list --long -c Name -c Host输出示例
在本例中,实例
test01和test02分别在compute1和compute2上运行:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test02 | compute2.ctlplane.localdomain | | test01 | compute1.ctlplane.localdomain | +--------+-------------------------------+创建使用策略
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 | [] | +-------------+--------------------------------------+确认已创建了 audit 模板:
$ openstack optimize audittemplate list输出示例
+----------------------+-----------------------------+ | Goal | Strategy | +----------------------+-----------------------------+ | server_consolidation | node_resource_consolidation | +----------------------+-----------------------------+运行基于策略、
node_resource_consolidation和目标server_consolidation的审计模板。Example
在此审计中,使用了
NodeResourceConsolidationaudit 模板,并检查这两个 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 | +---------------+--------------------------------------------------------+确认 Optimize 服务运行审计:
$ openstack optimize audit list输出示例
如果审计
状态的值为SUCCEEDED,则审计运行并创建了操作计划:+----------------------------+-----------+-----------------------------+ | UUID | State | Strategy | +----------------------------+-----------+-----------------------------+ | 7984626e-cc14-4b87-ab96- | SUCCEEDED | node_resource_consolidation | | f0127f2da51e | | | +----------------------------+-----------+-----------------------------+检查操作计划。
Example
$ openstack optimize actionplan list \ --audit 7984626e-cc14-4b87-ab96-f0127f2da51e输出示例
在本例中,
全局 efficacy是Released_nodes_ratio: 50.00 %。此值表示,如果您执行操作计划,计算服务将实时迁移实例,以便环境中的一半 Compute 节点会被释放,并且主机没有正在运行的实例:+---------------------------+-------------+----------------------------+ | UUID | State | Global efficacy | +---------------------------+-------------+----------------------------+ | 71fc5c0c-5890-4cd8-b919- | RECOMMENDED | Released_nodes_ratio: | | f06eb94da94b | | 50.00 % | | | | | +---------------------------+-------------+----------------------------+列出操作计划中包含的操作。
Example
$ openstack optimize action list \ --action-plan 71fc5c0c-5890-4cd8-b919-f06eb94da94b输出示例
在本例中,操作计划包含一个操作,
迁移:+--------------------------------------+---------+---------+ | UUID | State | Action | +--------------------------------------+---------+---------+ | bda5053b-2489-49fe-bc04-5b2ad3bc5075 | PENDING | migrate | +--------------------------------------+---------+---------+您可以查看更多有关操作的详情:
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 | +-------------+--------------------------------------------------------+执行操作计划。
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 | +---------------------+------------------------------------------------+确认操作是否成功。
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 | | +-----------------------+-----------+------------------------+---------+确认其中一个 Compute 节点不再托管任何实例:
$ openstack server list --long输出示例
在本例中,实例
test01和test02现在在同一 Compute 节点compute2上运行。这意味着compute1节点已释放:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test02 | compute2.ctlplane.localdomain | | test01 | compute2.ctlplane.localdomain | +--------+-------------------------------+退出
openstackclientpod:$ exit
4.2. 整合虚拟机实例 复制链接链接已复制到粘贴板!
使用带有 VM 工作负载整合策略的 Optimize 服务(watcher)在物理主机 CPU 或 RAM 利用率百分比超过指定阈值时移动虚拟机实例工作负载。所迁移的实例应该会导致主机的工作负载大约是 OpenShift (RHOSO)集群中红帽 OpenStack 服务中所有 Compute 节点的平均工作负载。与节点资源整合策略不同,VM 工作负载整合策略会将源 Compute 节点的状态设置为 禁用。
| 目标 | 策略 |
|---|---|
|
|
|
先决条件
- 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
- 您的 RHOSO 环境至少包含两个 Compute 节点,每个节点至少运行一个实例。
-
在工作站上安装了
oc命令行工具。 -
以具有
cluster-admin权限的用户身份登录到可访问 RHOSO 控制平面的工作站。
步骤
从您的工作站访问 OpenStackClient pod 的远程 shell:
$ oc rsh -n openstack openstackclient验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:
$ openstack server list --long输出示例
在本例中,在
compute1上运行的test01和test03实例具有较大的 RAM 负载。我们希望将 Optimize 服务与工作负载平衡策略结合使用,将至少一个这些实例迁移到具有更多容量的 Compute 节点,而无需用户中断:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test04 | compute2.ctlplane.localdomain | | test03 | compute1.ctlplane.localdomain | | test02 | compute2.ctlplane.localdomain | | test01 | compute1.ctlplane.localdomain | +--------+-------------------------------+创建使用策略
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 | [] | +-------------+--------------------------------------+确认已创建了 audit 模板:
$ openstack optimize audittemplate list输出示例
+----------------------+-----------------------------+ | Goal | Strategy | +----------------------+-----------------------------+ | server_consolidation | vm_workload_consolidation | +----------------------+-----------------------------+运行基于策略
vm_workload_consolidation的审计模板和目标server_consolidation的审计。使用适合您环境的值更新策略参数。Example
在这个审核中,使用
WorkLoadConsolidationaudit 模板,并使用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 | +---------------+------------------------------------------------------+确认 Optimize 服务运行审计:
$ openstack optimize audit list输出示例
如果审计
状态的值为SUCCEEDED,则审计运行并创建了操作计划:+----------------------------+-----------+-----------------------------+ | UUID | State | Strategy | +----------------------------+-----------+-----------------------------+ | bdb0edfa-344a-4897-a7fd- | SUCCEEDED | vm_workload_consolidation | | 3b1994d87db7 | | | +----------------------------+-----------+-----------------------------+检查操作计划。
Example
$ openstack optimize actionplan list \ --audit bdb0edfa-344a-4897-a7fd-3b1994d87db7输出示例
在本例中,
全局 efficacy是Live_migrations_count: 50.00 %。这个值表示,如果您执行操作计划,计算服务将迁移当前运行的实例的 50%:+---------------------------+-------------+----------------------------+ | UUID | State | Global efficacy | +---------------------------+-------------+----------------------------+ | 71bb6d02-50a9-4e18-b030- | RECOMMENDED | Released_nodes_ratio: | | c070d5b36cde | | 50.00 % | | | | | +---------------------------+-------------+----------------------------+列出操作计划中包含的操作。
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 | | | +-----------------------------+---------+---------------------------+您可以查看更多有关操作的详情:
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. | +-------------+--------------------------------------------------------+执行操作计划。
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 | +---------------------+------------------------------------------------+确认操作是否成功。
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 | | +-----------+----------------------------+---------------------------+确认 CPU 使用量较重的实例已迁移到不同的 Compute 节点:
$ openstack server list --long输出示例
在本例中,实例
test01和test03现在在不同节点compute2上运行:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test04 | compute2.ctlplane.localdomain | | test03 | compute2.ctlplane.localdomain | | test02 | compute2.ctlplane.localdomain | | test01 | compute2.ctlplane.localdomain | +--------+-------------------------------+退出
openstackclientpod:$ exit
4.3. 稳定多个工作负载 复制链接链接已复制到粘贴板!
使用带有 工作负载稳定策略的 Optimize 服务(watcher)在物理主机 CPU 或 RAM 利用率百分比超过指定阈值时移动虚拟机实例工作负载。迁移的实例应该使主机的工作负载大约是 OpenShift (RHOSO)集群中红帽 OpenStack 服务中所有 Compute 节点的平均工作负载。
本主题还演示了如何在建立多个工作负载时使用 OpenStack Dashboard (horizon)。
| 目标 | 策略 |
|---|---|
|
|
|
先决条件
- 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
- 您至少创建了在不同节点上运行的两个实例。
- 您已在工作站上安装了 Dashboard 服务(horizon)。
-
在工作站上安装了
oc命令行工具。 -
以具有
cluster-admin权限的用户身份登录到可访问 RHOSO 控制平面的工作站。
步骤
确保您位于分配了
Admin角色的项目中:
单击
Compute菜单,然后选择Instances。
验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:
在本例中,在
compute1上运行的test01和test03实例具有大量 CPU 负载。使用带有工作负载稳定(stabilization)策略的 Optimize 服务,将至少一个实例实时迁移到具有更多容量的 Compute 节点,而无需用户中断:
点
Admin选项卡:
点
Optimization菜单,然后选择Audit Templates:
在
审计模板面板中,单击Create Template。
此时会显示
Create Audit Template对话框。创建名为
WorkLoadStabilization的审计模板,选择目标工作负载负载平衡,然后选择策略Workload stabilization。完成后,单击Create Audit Template按钮。
单击
Audits子选项卡,然后单击Create Audit按钮。
此时会显示
Create Audit对话框。选择以下值,然后点击
Create Audit按钮:-
在
审计模板中,选择WorkLoadStabilization。 -
在
审计类型中,选择CONTINUOUS。 在
Interval中,输入180。
-
在
点
审计的 UUID,以查看为新审计创建的操作计划。
单击操作计划的 UUID,以查看更多详细信息。
单击
相关 Actions下的 UUID。
在
Actions面板中,查看有关推荐的操作的更多信息。在本例中,
test01实例(CPU 负载过重的实例)将实时迁移从compute1节点到compute2节点。
检查完操作后,点
Action Plan子菜单:
在
Action Plans面板中,在RECOMMENDED操作计划中,单击Start Action Plan按钮:
State的值更改为ONGOING。监控 Action Plans 面板,直到
State显示SUCCEEDED值。单击
Compute菜单,然后选择Instances。
确认 CPU 使用量较重的实例已迁移到不同的 Compute 节点。
在本例中,实例
test01现在在不同节点上运行,compute2:
单击
Optimization菜单,然后选择Audits。
在
审计面板中,从Go to Action Plan下拉菜单中选择Cancel Audit以停止CONTINUOUS审计。
4.4. 平衡单个实例工作负载 复制链接链接已复制到粘贴板!
使用 Optimize 服务(watcher)和 工作 负载平衡策略,在物理主机 CPU 或 RAM 利用率百分比超过指定阈值时移动虚拟机实例工作负载。所迁移的实例应该会导致主机的工作负载大约是 OpenShift (RHOSO)集群中红帽 OpenStack 服务中所有 Compute 节点的平均工作负载。
| 目标 | 策略 |
|---|---|
|
|
|
先决条件
- 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
- 您的 RHOSO 环境至少包含两个 Compute 节点,每个节点至少运行一个实例。
-
在工作站上安装了
oc命令行工具。 -
以具有
cluster-admin权限的用户身份登录到可访问 RHOSO 控制平面的工作站。
步骤
从您的工作站访问 OpenStackClient pod 的远程 shell:
$ oc rsh -n openstack openstackclient验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:
$ openstack server list --long输出示例
在本例中,在
compute1上运行的test01和test03实例具有大量 CPU 负载。我们希望将 Optimize 服务与工作负载平衡策略一起使用,以在没有用户中断的情况下将至少一个实例实时迁移到具有更多容量的 Compute 节点:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test04 | compute2.ctlplane.localdomain | | test03 | compute1.ctlplane.localdomain | | test02 | compute2.ctlplane.localdomain | | test01 | compute1.ctlplane.localdomain | +--------+-------------------------------+创建使用 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 | [] | +-------------+--------------------------------------+确认已创建了 audit 模板:
$ openstack optimize audittemplate list输出示例
+----------------------+------------------+ | Goal | Strategy | +----------------------+------------------+ | workload_balancing | workload_balance | +----------------------+------------------+运行基于策略、
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 | +---------------+------------------------------------------------------+确认 Optimize 服务运行审计:
$ openstack optimize audit list输出示例
如果审计
状态的值为SUCCEEDED,则审计运行并创建了操作计划:+--------------------------------------+-----------+------------------+ | UUID | State | Strategy | +--------------------------------------+-----------+------------------+ | ad815d54-5b7d-4562-aa12-17e1b64d0868 | SUCCEEDED | workload_balance | +--------------------------------------+-----------+------------------+检查操作计划。
Example
$ openstack optimize actionplan list \ --audit ad815d54-5b7d-4562-aa12-17e1b64d0868输出示例
在本例中,
全局 efficacy是Live_migrations_count: 25.00 %。这个值表示,如果您执行操作计划,计算服务将迁移当前运行的实例的 25%:+---------------------------+-------------+----------------------------+ | UUID | State | Global efficacy | +---------------------------+-------------+----------------------------+ | f40dfa4e-1b96-4883-b85f- | RECOMMENDED | Live_migrations_count: | | 3bfa73554359 | | 25.00 % | | | | | +---------------------------+-------------+----------------------------+列出操作计划中包含的操作。
Example
$ openstack optimize action list \ --action-plan f40dfa4e-1b96-4883-b85f-3bfa73554359输出示例
在本例中,操作计划包含一个操作,
迁移:+--------------------------------------+---------+---------+ | UUID | State | Action | +--------------------------------------+---------+---------+ | 9a510bf9-ebac-450d-a4ea-a10b66d6d869 | PENDING | migrate | +--------------------------------------+---------+---------+您可以查看更多有关操作的详情:
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 | +-------------+--------------------------------------------------------+执行操作计划。
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 | +---------------------+------------------------------------------------+确认操作是否成功。
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 | | +------------------+---------+-----------+-------------------+---------+确认 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 | +--------+-------------------------------+退出
openstackclientpod:$ exit
4.5. 简化工作负载迁移 复制链接链接已复制到粘贴板!
使用 Optimize 服务(watcher)与 区域 迁移策略,在不中断用户的情况下有效地迁移多个实例,并在 OpenShift (RHOSO)环境中进行硬件维护的最小停机时间。
区域 迁移策略中的术语区域指的是用户定义的计算节点和存储池集合。zone 不引用 Openstack 可用区。
| 目标 | 策略 |
|---|---|
|
|
|
先决条件
- 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
- 您的 RHOSO 环境至少包含两个 Compute 节点,每个节点至少运行一个实例。
-
在工作站上安装了
oc命令行工具。 -
以具有
cluster-admin权限的用户身份登录到可访问 RHOSO 控制平面的工作站。
步骤
从您的工作站访问 OpenStackClient pod 的远程 shell:
$ oc rsh -n openstack openstackclient验证 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 | +--------+-------------------------------+创建使用 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 | [] | +-------------+--------------------------------------+确认已创建了 audit 模板:
$ openstack optimize audittemplate list输出示例
+----------------------+------------------+ | Goal | Strategy | +----------------------+------------------+ | hardware_maintenance | zone_migration | +----------------------+------------------+运行基于 strategy、
zone_migration和目标hardware_maintenance的审计模板。使用适合您环境的值更新策略参数。Example
本例中使用
ZoneMigrationaudit 模板,具有以下策略参数值:-
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 | +---------------+------------------------------------------------------+
-
确认 Optimize 服务创建了审计:
$ openstack optimize audit list输出示例
如果
State的值为SUCCEEDED,则审计运行并创建了操作计划:+--------------------------------------+-----------+------------------+ | UUID | State | Strategy | +--------------------------------------+-----------+------------------+ | 9e9eeb70-63bd-427e-a5a6-a2f049f1bc73 | SUCCEEDED | zone_migration | +--------------------------------------+-----------+------------------+检查操作计划。
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 | | | | % | | | | | +---------------------------+-------------+----------------------------+列出操作计划中包含的操作。
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 | +--------------------------------------+---------+---------+您可以查看更多有关操作的详情:
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 | +-------------+--------------------------------------------------------+执行操作计划。
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 | +--------------------------------------+-----------+---------+确认所有实例都已迁移到不同的 Compute 节点:
$ openstack server list --long输出示例
在本例中,
compute1上运行的两个实例现在在compute2上运行:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test03 | compute2.ctlplane.localdomain | | test02 | compute2.ctlplane.localdomain | | test01 | compute2.ctlplane.localdomain | +--------+-------------------------------+退出
openstackclientpod:$ exit
4.6. 为计划维护准备 Compute 节点 复制链接链接已复制到粘贴板!
使用带有 主机维护策略的 Optimize 服务(watcher)将 Red Hat OpenStack Services on OpenShift (RHOSO)环境中的所有实例从您的 Red Hat OpenStack Services (RHOSO)环境中迁移,以便在用户中断的情况下执行主机维护。如果没有提供备份节点,则 Optimize 服务通过依赖 nova-scheduler 来迁移所有实例。在这两种用例中,计算维护节点将被禁用。
在计划维护窗口中使用主机维护策略,其中负载较低,以最大程度降低对工作负载的影响。运行审计时,请确保不会更改默认的 audit_type 值 ONESHOT。
| 目标 | 策略 |
|---|---|
|
|
|
先决条件
- 您有一个可正常工作的 RHOSO 18.0,在其上运行 Optimize 服务(watcher)。
您至少有两个 Compute 节点:
- 一个 Compute 节点,至少有一个实例正在运行。
- 充当备份节点的第二个 Compute 节点。
-
在工作站上安装了
oc命令行工具。 -
以具有
cluster-admin权限的用户身份登录到可访问 RHOSO 控制平面的工作站。
步骤
从您的工作站访问 OpenStackClient pod 的远程 shell:
$ oc rsh -n openstack openstackclient验证至少有两个计算节点和至少一个实例。
$ openstack server list --long输出示例
在本例中,一个实例在
compute1上运行,一个实例在compute2上运行。compute1节点计划进行维护,因此我们希望使用带有主机维护策略的 Optimize 服务,将实例从compute1迁移到compute2,而无需用户中断:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test02 | compute2.ctlplane.localdomain | | test01 | compute1.ctlplane.localdomain | +--------+-------------------------------+创建使用 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 | [] | +-------------+--------------------------------------+确认已创建了 audit 模板:
$ openstack optimize audittemplate list输出示例
+----------------------+------------------+ | Goal | Strategy | +----------------------+------------------+ | cluster_maintaining | host_maintenance | +----------------------+------------------+运行基于策略、
host_maintenance和目标cluster_maintaining的审计,它使用审计模板。使用适合您环境的值更新策略参数。Example
本例中使用
HostMaintenanceaudit 模板,同时为维护计划提供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 | +---------------+-------------------------------------------------------+确认 Optimize 服务创建了审计:
$ openstack optimize audit list输出示例
如果
State的值为SUCCEEDED,则审计运行并创建了操作计划:+--------------------------------------+-----------+------------------+ | UUID | State | Strategy | +--------------------------------------+-----------+------------------+ | 8cfb4abe-3720-4af2-a8a9-fba8fff1f442 | SUCCEEDED | host_maintenance | +--------------------------------------+-----------+------------------+检查操作计划。
Example
$ openstack optimize actionplan list \ --audit 8cfb4abe-3720-4af2-a8a9-fba8fff1f442输出示例
+--------------------------------------+-------------+-----------------+ | UUID | State | Global efficacy | +--------------------------------------+-------------+-----------------+ | 40017617-7698-4ce7-b5ce-2917ec522a08 | RECOMMENDED | | +--------------------------------------+-------------+-----------------+列出操作计划中包含的操作。
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 | +--------------------------------------+---------+---------------------------+您可以查看更多有关操作的详细信息。
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. | +-------------+--------------------------------------------------------+执行操作计划。
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 | +---------------------+--------------------------------------+确认操作是否成功。
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 | +--------------------------------------+-----------+---------------------------+确认在维护节点上运行的所有实例都已迁移:
$ openstack server list --long输出示例
在本例中,在
compute1节点上运行的实例,test01现在在compute2节点上运行:+--------+-------------------------------+ | Name | Host | +--------+-------------------------------+ | test02 | compute2.ctlplane.localdomain | | test01 | compute2.ctlplane.localdomain | +--------+-------------------------------+确认维护节点已被禁用。
$ openstack compute service list输出示例
在本例中,
compute1节点的Status为disabled:+-------------------------------+----------+ | Host | Status | +-------------------------------+----------+ | nova-cell0-conductor-0 | enabled | | nova-scheduler-0 | enabled | | nova-cell1-conductor-0 | enabled | | compute2.ctlplane.localdomain | enabled | | compute1.ctlplane.localdomain | disabled | +-------------------------------+----------+退出
openstackclientpod:$ exit