启用目标主机冷迁移 — Ocata

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

此功能的目标是允许操作员手动使用目标主机进行冷迁移。此外,提供一种方法来确保在指定目标主机时,冷迁移操作的资源分配一致性。

问题描述

可以在实时迁移操作中指定目标主机。并且在指定实时迁移操作的目标主机时,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”参数为空,则将向用户提供 HTTP 400 Bad Request 错误。

微版本已升级。

安全影响

通知影响

其他最终用户影响

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

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

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

natsume-takashi

工作项

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

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

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

  • 在 novaclient 上添加目标主机参数和“force”参数

  • 添加 nova 功能测试

  • 添加 tempest 测试

依赖项

测试

添加以下测试。

  • 单元测试

  • 功能测试

  • Tempest 测试

文档影响

  • API 参考

  • CLI 参考

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

参考资料

历史

在 juno 中之前已经批准了指定目标主机的功能[1]。对于 ocata,添加了检查目标主机是否符合调度器规则的函数以及“force”标志。

修订版

发布名称

描述

Ocata

引入