主机恢复的虚拟机迁移¶
https://blueprints.launchpad.net/masakari/+spec/vm-evacuations-for-host-recovery
问题描述¶
如果一个计算节点发生故障,Masakari 将从故障主机迁移实例。
如果同时发生大量主机故障,计算节点的资源将急剧减少。可能没有足够的资源来恢复所有实例。因此,优先迁移重要的实例是合理的,并且一旦云环境遇到不可逆转的情况,可以中止迁移。
当故障主机恢复后,恢复的资源可能会处于空闲状态。为了充分利用恢复的资源,需要将实例迁移到恢复的主机。有时可能会有有意的分布。例如,DRS 或手动迁移可能会扰乱分布。因此,在主机发生故障时保存迁移信息,并在主机恢复时根据之前的迁移信息将实例迁移回去是一个好主意。
提议的变更¶
本规范主要记录虚拟机迁移信息到数据库,主要包括 instance_uuid、notification_uuid、source_host、dest_host、type、status、start_time 和 end_time。
用户可以通过 vmove API 获取 ‘COMPUTE_HOST’ 类型通知的虚拟机迁移信息。
备选方案¶
无
数据模型影响¶
将在 Masakari 数据库中添加表 vmoves。
created_at: 日期时间。
updated_at: 日期时间。
deleted_at: 日期时间。
deleted: 布尔值。
uuid: UUID。迁移的 UUID。
notification_uuid: UUID。迁移所属通知的 UUID。
instance_uuid: UUID。实例的 UUID。
instance_uuid: 字符串。实例的名称。
source_host: 字符串。迁移的源主机名称。
dest_host: 字符串。迁移的目标主机名称。
start_time: 日期时间。迁移的开始时间。
end_time: 日期时间。迁移的结束时间。
type: 字符串。表示迁移的可能类型,例如 migration、live_migration 或 evacuation。
status: 字符串。表示迁移的可能状态,例如 pending、ongoing、ignored、failed 或 succeeded。
message: 字符串。如果迁移失败或被忽略,则显示一些有意义的信息。
REST API 影响¶
以下 vmove API 将在新的 API 微版本中引入。
GET /notifications/<notification_id>/vmoves
响应示例
{ "vmoves": [ { "uuid": "239f95ca-fd46-44d2-8ff8-35e8a9c94f69", "instance_uuid": "33826ebd-af0f-445d-833f-e06340f7ae1c", "instance_name": "vm-1", "notification_uuid": "c0fa1a39-c150-4b86-ae97-8fae31700c67", "source_host": "node01", "dest_host": "node02", "start_time": "2022-11-22 14:50:22", "end_time": "2022-11-22 14:50:35", "type": "evacuation", "status": "succeeded", "message": null }, { "uuid": "65a5da84-5819-4aea-8278-a28d2b489028", "instance_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a", "instance_name": "vm-2", "notification_uuid": "c0fa1a39-c150-4b86-ae97-8fae31700c67", "source_host": "node01", "dest_host": "node02", "start_time": "2022-11-22 14:50:23", "end_time": "2022-11-22 14:50:38", "type": "evacuation", "status": "succeeded", "message": null } ] }
GET /notifications/<notification_id>/vmoves/<vmove_id>
响应示例
{ "vmove": { "uuid": "239f95ca-fd46-44d2-8ff8-35e8a9c94f69", "instance_uuid": "33826ebd-af0f-445d-833f-e06340f7ae1c", "instance_name": "vm-1", "notification_uuid": "c0fa1a39-c150-4b86-ae97-8fae31700c67", "source_host": "node01", "dest_host": "node02", "start_time": "2022-11-22 14:50:22", "end_time": "2022-11-22 14:50:38", "type": "evacuation", "status": "succeeded", "message": null } }
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
masakari-dashboard 和 openstacksdk 将更新以支持新的微版本中主机类型通知的虚拟机迁移。
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
主要负责人
suzhengwei <suzhengwei@inspur.com>
工作项¶
创建对象定义、数据库模式,更新引擎以处理此功能。
创建一个新的 API 微版本,以获取所有迁移信息并获取特定迁移的详细信息。
更新关于主机恢复虚拟机迁移的文档
更新 masakari-dashboard 和 openstacksdk 以管理虚拟机迁移。
添加单元和功能测试。
依赖项¶
无
测试¶
需要单元测试和功能测试。
添加必要的单元测试和功能测试,这些测试将在 gate 中运行。
文档影响¶
更新 Masakari API 参考文档。
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
Xena |
引入 |
瑜伽 |
重新提出 |