允许目标状态进行迁移¶
https://blueprints.launchpad.net/nova/+spec/allowing-target-state-for-evacuate
在某些情况下,操作员可能希望将正在运行的实例迁移到停止状态,而不管实例的当前状态如何。
问题描述¶
当前的迁移实例 API 不允许操作员为迁移的实例设置期望的目标状态。当实例在源主机上处于活动状态时,恢复其原始状态可能会导致问题,如果虚拟机需要有效的令牌才能启动,或者在使用加密卷时阻止迁移。
用例¶
作为操作员,我希望能够将实例迁移到关机状态,因为我的租户工作负载可能具有特定的安全要求,不允许管理员启动它们。
作为操作员,我希望能够迁移带有加密卷的虚拟机,而无需使 barbican 密钥对管理员可读,从而降低安全性。
作为用户,如果我的实例由于主机故障而离线,我不希望管理员在未经我知情的情况下将其迁移并重新启动,因为我可能已经替换了它,并且僵尸实例的恢复可能会导致冲突。
提议的变更¶
在更新后的版本中,API 将强制迁移实例进入停止状态。预计在更新后的版本之前,行为保持不变,状态为活动或停止的实例将在目标位置保持其状态。
使用新的微版本,nova 将始终将实例迁移到 SHUTOFF 状态。
保持实例迁移后状态的唯一方法是使用旧的微版本。
备选方案¶
有可能增强 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 |
首次介绍 |