区域迁移¶
概要¶
显示名称: 区域 迁移
目标: 硬件维护
使用实例和卷迁移进行区域迁移
这是区域迁移策略,旨在高效迁移大量实例和卷,并在硬件维护期间最大限度地减少停机时间。
注意
策略名称中的术语 区域 不是指 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_node 和 destination_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 |
|---|---|---|---|---|
|
数组 |
无 |
可选 |
要迁移的计算节点。 |
|
数组 |
无 |
可选 |
要迁移的存储池。 |
|
整数 |
6 |
可选 |
总共要并行运行的操作数量。 |
|
整数 |
2 |
可选 |
在一个操作计划中每个计算节点要并行运行的操作数量。 |
|
整数 |
2 |
可选 |
每个存储池要并行运行的操作数量。 |
|
对象 |
无 |
可选 |
列表优先考虑实例和卷。 |
|
布尔值 |
False |
可选 |
False:所有卷迁移完成后将迁移实例。 True:在已挂载的卷迁移完成后将迁移实例。 |
注意
上述表格中的所有参数都有默认值,因此用户可以在不指定值的情况下创建审计。但是,如果仅使用默认参数,则审计将没有任何可操作的内容。
parallel_*参数不参考并发,而是限制添加到操作计划中的操作数量compute_nodes、storage_pools和priority是可选参数,但是,如果传递了它们,则**需要**下表中的参数
compute_nodes 数组的元素是
参数 |
type |
default |
必需 |
description |
|---|---|---|---|---|
|
字符串 |
无 |
必需 |
实例迁移的计算节点。 |
|
字符串 |
无 |
可选 |
实例迁移到的计算节点。如果省略,nova 将自动选择目标节点。 |
storage_pools 数组的元素是
参数 |
type |
default |
必需 |
description |
|---|---|---|---|---|
|
字符串 |
无 |
必需 |
卷迁移的存储池。 |
|
字符串 |
无 |
可选 |
卷迁移到的存储池。 |
|
字符串 |
无 |
必需 |
源卷类型。 |
|
字符串 |
无 |
必需 |
目标卷类型 |
priority 对象中的元素是
参数 |
type |
default |
必需 |
description |
|---|---|---|---|---|
|
数组 |
无 |
可选 |
项目名称。 |
|
数组 |
无 |
可选 |
计算节点名称。 |
|
数组 |
无 |
可选 |
存储池名称。 |
|
enum |
无 |
可选 |
实例属性。[“vcpu_num”, “mem_size”, “disk_size”, “created_at”] |
|
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 模型收集器,则模型将过时并最终导致错误。请参阅 启用存储收集器的配置选项 文档。
支持注意事项¶
该策略提供了执行实例迁移和卷迁移的选项。目前,实例迁移已准备好投入生产使用,而卷迁移仍处于实验阶段。
外部链接¶
无