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