启用目标主机冷迁移 — Pike

https://blueprints.launchpad.net/nova/+spec/cold-migration-with-target-pike

此功能的目标是允许操作员手动使用目标主机进行冷迁移。

问题描述

在实时迁移操作中,可以指定目标主机。并且在 REST API 中,当指定目标主机时,存在调度器规则检查和 ‘force’ 标志。

但是,在冷迁移操作中,无法指定目标主机。这与实时迁移操作不一致,并且这两种操作在需要指定主机时都有相似的情况。

用例

这与实时迁移用例相同。有时,操作员或脚本会决定哪个主机最适合接受冷迁移,然后希望执行它。应确保与实时迁移用例的一致性。

提议的变更

修改 API 和当前的 resize_instance 流程,以便能够指定冷迁移的目标主机。

添加一个函数,以默认行为检查目标主机是否符合调度器规则。具体来说,在 nova/compute/api.py 中添加 RequestSpec 对象的 ‘requested_destination’ 设置。该字段已经在调度器中得到支持,因此只需要填充即可。

此蓝图还提供了一种让操作员绕过调度器的方法,我们将通过添加一个名为 ‘force’(接受 True 或 False,默认值为 False)的请求体参数,并使相应的 CLI 方法公开该 force 选项,来为冷迁移提供 API,包括目标主机。如果客户端请求的微版本早于提供该字段的版本,则不会将其传递(既不会传递 True 或 False,而是该键将不存在)给 conductor,因此 conductor 不会调用调度器。

备选方案

数据模型影响

REST API 影响

  • URL: POST /v2.1/servers/{server_id}/action

    JSON 请求体

    {
        "migrate": {
            "host": "target-host",
            "force": True
        }
    }
    

由于与实时迁移 API 一致,因此 ‘host’ 参数用于指定目标主机是必需的(不是可选的)。

如果 ‘force’ 为 True,则不检查目标主机。如果 ‘force’ 为 False 或 null 或未提供,则检查目标主机。

如果在请求体中提供了 ‘force’ 并且其值为 true,但 ‘host’ 参数为 null,则将向用户提供 HTTP 400 Bad Request 错误。

微版本已提升。

安全影响

通知影响

其他最终用户影响

python-novaclient 将被修改,使其具有可选的目标主机参数。并添加可选的 ‘force’ 参数。

nova migrate [–force True] <server> [<host>]

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

natsume-takashi

工作项

  • 添加逻辑以指定冷迁移的目标主机

  • 添加处理冷迁移中目标主机检查的逻辑

  • 添加带有新微版本号的 API

  • 在 novaclient 上添加目标主机参数和 ‘force’ 参数

  • 添加 nova 功能测试

  • 添加 tempest 测试

依赖项

测试

添加以下测试。

  • 单元测试

  • 功能测试

  • Tempest 测试

文档影响

  • API 参考

  • CLI 参考

  • 关于冷迁移主题的管理员用户指南。

参考资料

历史

该蓝图已获得 Ocata 的批准,命名为 ‘cold-migration-with-target-ocata’。现在将其重命名为 ‘cold-migration-with-target-pike’。

修订版

发布名称

描述

Ocata

已批准

Pike

重新提出