API: 将实例疏散到计划主机¶
https://blueprints.launchpad.net/nova/+spec/find-host-and-evacuate-instance
此功能的目标是让操作员无需手动选择目标主机即可疏散实例。调度器将选择最佳目标主机。
问题描述¶
在发生不可恢复的硬件故障(计算节点宕机)时,操作员需要选择目标计算主机来疏散实例。
这对于临时预选的故障转移主机来说是可行的,但如果他们只想疏散/重建实例而不采取进一步操作,操作员必须检查每个实例/风味元数据,并为每次疏散单独选择匹配规格的目标主机。
如果使用外部工具触发疏散,逻辑中必须包含关于计算主机的相关信息,以便适当地调用 API。
这也有助于与迁移和实时迁移操作保持一致。
提议的变更¶
修改当前重建实例流程,让调度器为正在疏散的实例选择最佳目标主机。
备选方案¶
外部工具可以选取合适的主机,而 Nova 本身已经可以做到这一点。
数据模型影响¶
无
REST API 影响¶
当前的疏散 API v2/v3 将被修改为接受不包含目标主机字段的正文数据,此更改将在 v2 的情况下通过新的扩展 ExtendedEvacuateFindHost 进行宣传。如果该字段存在但为空,则将应用旧行为,以便确定是由于输入错误而缺失还是其他原因。
- 将实例疏散到另一个计算主机。
POST
正常响应代码:200
- 预期的错误 http 响应代码
404:计算主机(如果提供)/实例未找到
400:计算服务正在使用中
409:实例状态无效
v2|v3/servers/id/action
V3 的模式定义
evacuate = { 'type': 'object', 'properties': { 'evacuate': { 'type': 'object', 'properties': { 'on_shared_storage': parameter_types.boolean, 'admin_password': parameter_types.admin_password, }, 'required': ['on_shared_storage'] 'additionalProperties': False, }, }, 'required': ['evacuate'], 'additionalProperties': False, }
示例请求
{ "evacuate": { "adminPass": "%(adminPass)s", "onSharedStorage": "%(onSharedStorage)s" }}
示例响应
{ "adminPass": "%(password)s" }}
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
python-novaclient 将被修改为使 target_host 参数可选。
用户可以通过以下方式触发此功能:nova evacuate my_server
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
leandro-i-constantino
- 其他贡献者
juan-m-olle
工作项¶
将重建实例移动到 Conductor 任务,以统一重建/疏散逻辑
添加选择目标主机的逻辑
添加 APIv2/v3
在 nova-client 上将 target-host 设置为可选
允许疏散处于“亲和性”组中的实例,允许调度器选择目标主机
依赖项¶
为了完成用例,将需要以下 bp https://blueprints.launchpad.net/nova/+spec/validate-targethost-live-migration,因为我们可以从特定实例中检索原始调度器提示,并让调度器基于此选择最佳主机。在此之前,没有使用任何调度器提示启动的实例仍然可以使用风味规格被调度器选择。
测试¶
Tempest 目前不支持多节点测试,因此将在 CI 可以运行此类测试后添加。
文档影响¶
API 文档以反映主机字段现在是可选的。如果正文中不存在,将触发新功能。
客户端文档(由于可选参数)
关于疏散主题的管理员用户指南。
参考资料¶
无