允许目标状态进行迁移

https://blueprints.launchpad.net/nova/+spec/allowing-target-state-for-evacuate

在某些情况下,操作员可能希望将正在运行的实例迁移到停止状态,而不管实例的当前状态如何。

问题描述

当前的迁移实例 API 不允许操作员为迁移的实例设置期望的目标状态。当实例在源主机上处于活动状态时,恢复其原始状态可能会导致问题,如果虚拟机需要有效的令牌才能启动,或者在使用加密卷时阻止迁移。

用例

  • 作为操作员,我希望能够将实例迁移到关机状态,因为我的租户工作负载可能具有特定的安全要求,不允许管理员启动它们。

  • 作为操作员,我希望能够迁移带有加密卷的虚拟机,而无需使 barbican 密钥对管理员可读,从而降低安全性。

  • 作为用户,如果我的实例由于主机故障而离线,我不希望管理员在未经我知情的情况下将其迁移并重新启动,因为我可能已经替换了它,并且僵尸实例的恢复可能会导致冲突。

提议的变更

在更新后的版本中,API 将强制迁移实例进入停止状态。预计在更新后的版本之前,行为保持不变,状态为活动或停止的实例将在目标位置保持其状态。

  1. 使用新的微版本,nova 将始终将实例迁移到 SHUTOFF 状态。

  2. 保持实例迁移后状态的唯一方法是使用旧的微版本。

备选方案

  • 有可能增强 API resetState 以接受 RUNNING 和 SHUTOFF。

  • 有可能允许 stop 操作在计算节点宕机时工作,但这将在数据库和实例的实际状态之间造成不一致。

数据模型影响

无。

REST API 影响

预计会进行微版本更新。但模式中不会出现任何更改。

POST /servers/{server_id}/action

{
    "evacuate": {
         "host": "b419863b7d814906a68fb31703c0dbd6",
    }
}

安全影响

无。

通知影响

无。

其他最终用户影响

  • nova api-ref 将更新以反映这些更改。

  • 关于 openstack 客户端,除了无操作更新之外,预计不会发生任何更改。

性能影响

无。

其他部署者影响

无。

开发人员影响

已达成共识,此规范不会解决设计问题,即 迁移服务器 操作启动虚拟机,然后在目标状态为停止时停止它。已在

升级影响

  • 将添加升级说明,描述新的行为。

  • 预计会进行 RPC 更改,以使计算管理器处理新的目标状态,从而导致版本递增。

  • 在 API 级别,将进行最小版本检查,以确保所有服务都足够新以接受请求,否则请求将被拒绝,并出现 NotSupported 异常。

实现

负责人

主要负责人

sahid-ferdjaoui

其他贡献者

功能联络人

功能联络人

工作项

  • 带有 microversion 的 API 变更

  • 更改的测试。

依赖项

无。

测试

  • API 更改的单元和功能测试。

文档影响

api-ref 将更新以反映这些更改。

参考资料

历史

修订版

发布名称

描述

2023.1 - Antelope

首次介绍