超时后强制实时迁移

https://blueprints.launchpad.net/nova/+spec/live-migration-force-after-timeout

用在完成超时时强制完成实时迁移的选项,替换现有的有缺陷的自动后期复制逻辑,而不是中止迁移。

问题描述

在理想情况下,我们可以判断虚拟机似乎无法移动,并提前向操作员发出完成超时警告。这就是进度超时。不幸的是,我们无法从 QEMU 和 libvirt 获取足够的信息来正确检测这种情况。由于我们正在采样锯齿波,因此即使实际上并非如此,我们也可能认为进展甚微。此外,仅监控内存,因此大型块迁移总是看起来没有进展。

上一个周期我们弃用了进度超时,并默认禁用了它。鉴于没有快速使其工作的方法,应该在 Pike 中将其删除。自动后期复制使用相同有缺陷的数据,因此也应该删除该逻辑。

Nova 目前优化的是有限的客户机停机时间,而不是确保实时迁移操作始终成功。在执行主机维护时,操作员可能希望将受影响主机上的所有虚拟机移动到未受影响的主机。在某些情况下,虚拟机可能太忙而无法在完成超时之前移动,而目前这意味着实时迁移将因超时错误而失败。

自动后期复制过去可以帮助解决此用例,确保 Nova 尽最大努力确保实时迁移完成,但代价是客户机停机时间略长。我们应该寻找自动后期复制的替代方案。

用例

  • 操作员希望修补主机,并希望将所有虚拟机移出该主机,同时最大限度地减少对虚拟机的冲击,因此他们使用实时迁移。如果虚拟机没有实时迁移,将会导致大量的虚拟机停机时间,因此在实时迁移期间采取更多的虚拟机停机时间更好,这样虚拟机就可以避免在虚拟机未被实时迁移的情况下出现更大的停机时间。

提议的变更

  • 配置选项 libvirt.live_migration_progress_timeout 在 Ocata 中已被弃用,现在可以删除。

  • libvirt 驱动程序中自动触发后期复制的当前逻辑将被删除。

  • 将添加一个新的配置选项 libvirt.live_migration_timeout_action。这个新选项将可以选择 abort(默认)或 force_complete。此选项将确定在 live_migration_completion_timeout 过期后将对虚拟机采取哪些操作。目前 nova 在完成超时过期后只是中止 LM 操作。默认情况下,我们保持完成超时后中止操作的相同行为。

请注意,abortforce_complete 操作是 live_migration_timeout_action 配置选项中的选项,与调用同名的现有 REST API 相同。特别是,force_complete 将根据是否启用和可用后期复制,暂停虚拟机或触发后期复制。

备选方案

我们可以只删除自动后期复制逻辑而不替换它,但这会阻止我们帮助操作员解决上述用例。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Raj Singh (raj_singh)

其他贡献者

John Garbutt (johnthetubaguy) OSIC

工作项

  • 删除 libvirt.live_migration_progress_timeout 和自动后期复制逻辑。

  • 添加一个新的 libvirt 配置文件选项 live_migration_timeout_action

依赖项

测试

添加 tempest 和单元测试来测试新逻辑。

文档影响

记录新的配置选项。

参考资料

历史

修订版

发布名称

描述

Pike

引入