超时后强制实时迁移

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

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

问题描述

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

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

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 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

升级影响

实现

负责人

主要负责人

Kevin Zheng

其他贡献者

江益坤

工作项

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

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

依赖项

测试

添加树内功能和单元测试来测试新逻辑。 由于超时测试的不可预测性,在 Tempest 中测试这些场景实际上是不可能的。 因此,我们可以模拟和测试功能测试中的逻辑,例如那些已经存在的测试。

文档影响

记录新的配置选项。

参考资料

历史

修订版

发布名称

描述

Pike

已批准但尚未实施

Stein

重新提出