区域迁移

概要

显示名称: 区域 迁移

目标: 硬件维护

使用实例和卷迁移进行区域迁移

这是区域迁移策略,旨在高效迁移大量实例和卷,并在硬件维护期间最大限度地减少停机时间。

注意

策略名称中的术语 区域 不是指 Openstack 可用区,而是用户定义的计算节点和存储池集合。目前,跨实际可用区的迁移尚未完全测试,并且可能在所有集群配置中都无法正常工作。

需求

指标

集群数据模型

默认 Watcher 的计算集群数据模型

Nova 集群数据模型收集器

Nova 集群数据模型收集器创建了计算服务暴露的资源的内存表示。

还需要存储集群数据模型

Cinder 集群数据模型收集器

Cinder 集群数据模型收集器创建存储服务公开的资源的内存表示。

行动

默认 Watcher 的动作

动作

description

migrate

将服务器迁移到目标 nova-compute 宿主机

此动作允许您将服务器迁移到另一个计算目标宿主机。迁移类型“live”只能用于迁移活动虚拟机。迁移类型“cold”可用于迁移非活动虚拟机以及活动虚拟机,在迁移过程中将关闭它们。

动作模式是

schema = Schema({
 'resource_id': str,  # should be a UUID
 'migration_type': str,  # choices -> "live", "cold"
 'destination_node': str,
 'source_node': str,
})

resource_id 是要迁移的服务器的 UUID。 source_nodedestination_node 参数分别是源和目标计算主机名。

注意

如果提供了 destination_node 参数,则 Nova API 版本必须为 2.56 或更高版本。

volume_migrate

将卷迁移到目标节点或类型

通过使用此操作,您将能够迁移 cinder 卷。迁移类型“swap”只能用于迁移已挂载的卷。迁移类型“migrate”可用于将分离的卷迁移到相同卷类型的池。迁移类型“retype”可用于更改分离卷的卷类型。

动作模式是

schema = Schema({
    'resource_id': str,  # should be a UUID
    'migration_type': str,  # choices -> "swap", "migrate","retype"
    'destination_node': str,
    'destination_type': str,
})

resource_id 是要迁移的 cinder 卷的 UUID。 destination_node 是目标块存储池名称。(此命令返回可用池的列表:cinder get-pools)这是迁移到相同卷类型的池的分离卷的必需参数。 destination_type 是目标块存储类型名称。(此命令返回可用类型的列表:cinder type-list)这是迁移分离卷或交换已挂载卷到不同卷类型的必需参数。

规划器

默认 Watcher 的规划器

权重规划器实现

此实现根据权重构建具有父级的动作。权重较高的动作集将在其他动作之前被调度。有 2 个配置选项可以配置:action_weights 和 parallelization。

Limitations

  • 此规划器需要对 action_weights 和 parallelization 配置进行良好的调整。

配置

策略参数是

参数

type

default

必需

description

compute_nodes

数组

可选

要迁移的计算节点。

storage_pools

数组

可选

要迁移的存储池。

parallel_total

整数

6

可选

总共要并行运行的操作数量。

parallel_per_node

整数

2

可选

在一个操作计划中每个计算节点要并行运行的操作数量。

parallel_per_pool

整数

2

可选

每个存储池要并行运行的操作数量。

priority

对象

可选

列表优先考虑实例和卷。

with_attached_volume

布尔值

False

可选

False:所有卷迁移完成后将迁移实例。 True:在已挂载的卷迁移完成后将迁移实例。

注意

  • 上述表格中的所有参数都有默认值,因此用户可以在不指定值的情况下创建审计。但是,如果使用默认参数,则审计将没有任何可操作的内容。

  • parallel_* 参数不参考并发,而是限制添加到操作计划中的操作数量

  • compute_nodesstorage_poolspriority 是可选参数,但是,如果传递了它们,则**需要**下表中的参数

compute_nodes 数组的元素是

参数

type

default

必需

description

src_node

字符串

必需

实例迁移的计算节点。

dst_node

字符串

可选

实例迁移到的计算节点。如果省略,nova 将自动选择目标节点。

storage_pools 数组的元素是

参数

type

default

必需

description

src_pool

字符串

必需

卷迁移的存储池。

dst_pool

字符串

可选

卷迁移到的存储池。

src_type

字符串

必需

源卷类型。

dst_type

字符串

必需

目标卷类型

priority 对象中的元素是

参数

type

default

必需

description

project

数组

可选

项目名称。

compute_node

数组

可选

计算节点名称。

storage_pool

数组

可选

存储池名称。

compute

enum

可选

实例属性。[“vcpu_num”, “mem_size”, “disk_size”, “created_at”]

storage

enum

可选

卷属性。[“size”, “created_at”]

效能指标

从命令行构建的操作计划的有效性指标是

[{'name': 'live_instance_migrate_ratio', 'description': 'Ratio of actual live migrated instances to planned live migrate instances.', 'unit': '%', 'value': 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}]

Horizon 中,这些指标以替代文本显示。

  • live_migrate_instance_count 在 Horizon 中显示为 实际 实时迁移的实例数

  • planned_live_migrate_instance_count 在 Horizon 中显示为 计划实时迁移的实例数

  • planned_live_migration_instance_count 指的是操作计划中计划实时迁移的实例。

  • live_migrate_instance_count 跟踪根据审计输入可以迁移的所有实例。

算法

有关区域迁移策略的更多信息,请参阅:https://specs.openstack.org/openstack/watcher-specs/specs/2025.2/implemented/zone-migration-strategy.html

如何使用它?

$ openstack optimize audittemplate create \
  at1 hardware_maintenance --strategy zone_migration

$ openstack optimize audit create -a at1 \
  -p compute_nodes='[{"src_node": "s01", "dst_node": "d01"}]'

注意

  • 目前,该策略不会在同一个审计中生成卷迁移和实例迁移。如果同时请求两者,则只有卷迁移将包含在操作计划中。

  • Cinder 模型收集器默认情况下未启用。如果在部署 Watcher 时未启用 Cinder 模型收集器,则模型将过时并最终导致错误。请参阅 启用存储收集器的配置选项 文档。

支持注意事项

该策略提供了执行实例迁移和卷迁移的选项。目前,实例迁移已准备好投入生产使用,而卷迁移仍处于实验阶段。