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
    Copy to Clipboard Toggle word wrap
  2. 验证 RHOSO 环境是否包含至少两个 Compute 节点,每个节点至少运行一个实例:

    $ openstack server list --long
    Copy to Clipboard Toggle word wrap

    输出示例

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

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

    Example

    在本例中,audit 模板名为 ZoneMigration

    $ openstack optimize audittemplate create -s zone_migration ZoneMigration hardware_maintenance
    Copy to Clipboard Toggle word wrap

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

    输出示例

    +-------------+--------------------------------------+
    | 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 | []                                   |
    +-------------+--------------------------------------+
    Copy to Clipboard Toggle word wrap
  4. 确认已创建了 audit 模板:

    $ openstack optimize audittemplate list
    Copy to Clipboard Toggle word wrap

    输出示例

    +----------------------+------------------+
    | Goal                 | Strategy         |
    +----------------------+------------------+
    | hardware_maintenance | zone_migration   |
    +----------------------+------------------+
    Copy to Clipboard Toggle word wrap
  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"}]'
      Copy to Clipboard Toggle word wrap

      输出示例

      +---------------+------------------------------------------------------+
      | 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                                                |
      +---------------+------------------------------------------------------+
      Copy to Clipboard Toggle word wrap
  6. 确认 Optimize 服务创建了审计:

    $ openstack optimize audit list
    Copy to Clipboard Toggle word wrap

    输出示例

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

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

    Example

    $ openstack optimize actionplan list \
    --audit  9e9eeb70-63bd-427e-a5a6-a2f049f1bc73 \
    -c UUID -c State -c "Global efficacy"
    Copy to Clipboard Toggle word wrap

    输出示例

    在本例中,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  |
    |                           |             | %                          |
    |                           |             |                            |
    +---------------------------+-------------+----------------------------+
    Copy to Clipboard Toggle word wrap
  8. 列出操作计划中包含的操作。

    Example

    $ openstack optimize action list \
    --action-plan 40305df2-c240-464b-ac56-62e51bf139ef \
    -c 'UUID' -c 'State' -c 'Action'
    Copy to Clipboard Toggle word wrap

    输出示例

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

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

    Example

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

    $ openstack optimize action show 680e6152-e163-443d-9bd4-178b73494aa4
    Copy to Clipboard Toggle word wrap

    输出示例

    在本例中,操作计划会将 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                                       |
    +-------------+--------------------------------------------------------+
    Copy to Clipboard Toggle word wrap
  10. 执行操作计划。

    Example

    $ openstack optimize actionplan start \
    40305df2-c240-464b-ac56-62e51bf139ef
    Copy to Clipboard Toggle word wrap

    输出示例

    在本例中,两个实例都从 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                                           |
    +---------------------+------------------------------------------------+
    Copy to Clipboard Toggle word wrap

    确认操作是否成功。

    Example

    $ openstack optimize action list \
    --action-plan 40305df2-c240-464b-ac56-62e51bf139ef
    Copy to Clipboard Toggle word wrap

    输出示例

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

    $ openstack server list --long
    Copy to Clipboard Toggle word wrap

    输出示例

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

    +--------+-------------------------------+
    | Name   | Host                          |
    +--------+-------------------------------+
    | test03 | compute2.ctlplane.localdomain |
    | test02 | compute2.ctlplane.localdomain |
    | test01 | compute2.ctlplane.localdomain |
    +--------+-------------------------------+
    Copy to Clipboard Toggle word wrap
  12. 退出 openstackclient pod:

    $ exit
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat