Ironic 的 Rescue 救援模式实现流程
2019-06-05 12:17 云物互联 阅读(368) 评论(0) 编辑 收藏 举报目录
救援模式
以往只有虚拟机支持救援模式,裸机是不支持的。直到 Queen 版本 Ironic 实现了这个功能。救援模式下,用户可以完成修复、Troubleshooting 裸机节点的错误配置,修改密码等工作,将裸机设置为救援模式时可以传入 rescue_password
参数。
实现 UML 图
- 用户调用 Nova 的 Rescue API;
- Nova ComputeManager 调用 Ironic Virt Driver 的
rescue()
Method,并传入rescue_password
参数; - Ironic Virt Driver 调用
node.set_provision_state(RESCUE)
,并传入rescue_password
参数; - Ironic Virt Driver 等待 Ironic node 的 provision_state 改变,并更新 Nova Instance State 状态;
- Ironic API 接受
set_provision_state
调用,执行do_node_rescue
RPC,并将 ironic node 的 ACTIVE 状态改为 RESCUING; - Ironic Conductor 将
rescue_password
保存到 instance_info 中,并调用合适的 Driver 开始救援; - Driver 启动
rescue ramdisk(RESCUING -> RESCUEWAIT)
,同时 Ironic Conductor 将 ironic node 移至 Rescue Network上; - RAMDisk IPA 启动后,回调
/v1/lookup
获取节点信息, 发送心跳; - Ironic Conductor 收到心跳后,根据 config drive 和 rescue password 调用
finalize_rescue(RESCUEWAIT -> RESCUING)
,删除 instance_info 中的rescue_password
; - RAMDisk IPA 设置传过来的
rescue_password
,从 config driver 中获取信息后配置网络,最后停止 IPA 服务; - Ironic Conductor 将 ironic node 移至最初的租户网络,并更新状态到 RESCUE;
转载请注明作者:JmilkFan 范桂飓