翻译官网救援/取消救援标准流程

1、用户在节点上调用Nova rescue
2、Nova ComputeManager调用virt驱动程序的rescue()方法,传入rescue_password作为参数
3、Virt驱动程序调用node.set_provision_state(RESCUE),并以rescue_password作为参数
4、Virt驱动程序在等待provision_state更改时循环,并根据需要更新Nova状态
5、Ironic API接收set_provision_state调用,并执行do_node_rescue RPC调用(ACTIVE - > RESCUING)
6、Ironic conductor在instance_info中设置了救援密码并将通知给相应的驱动
7、驱动程序使用配置的启动驱动程序启动救援虚拟磁盘(RESCUING - > RESCUEWAIT)。作为这个过程的一部分,Ironic将把节点放到rescue_network上,如ironic.conf配置
8、ramdisk启动,执行查找(/v1/lookup in ironic-api,获取节点信息,并开始心跳(/v1/heartbeat in ironic-api)
9、在收到心跳信号后,conductor 使用配置驱动器和救援密码(RESCUEWAIT - > RESCUING)调用finalize_rescue(/v1/commands),并从instance_info中删除救援密码,因为它不再需要
10、agent设置密码,从配置驱动器中的信息配置网络,并停止代理服务
11、conductor 将节点放回租户网络的网络端口,并将状态设置为RESCUE。

Standard rescue process

1、用户在节点上调用Nova unrescue
2、Nova称为Ironic unrescue()virt驱动程序。
3、Virt驱动程序调用node.set_provision_state(ACTIVE)。
4、Virt驱动程序在等待provision_state更改时循环,并根据需要更新Nova状态。
5、Ironic API接收set_provision_state调用,并执行do_node_unrescue RPC调用。
6、ironic conductor通知合适的驱动
7、驱动程序执行正常启动节点所需的操作,并将提供状态设置为ACTIVE。

Standard Unrescue process

ACTIVE -> RESCUING (initiate rescue)
RESCUING -> RESCUE (rescue succeeds)
RESCUING -> RESCUEWAIT (optionally, wait on external callback)
RESCUING -> RESCUEFAIL (rescue fails)
RESCUEWAIT -> RESCUING (callback succeeds)
RESCUEWAIT -> RESCUEFAIL (callback fails or abort issued)
RESCUEWAIT -> DELETING (delete instance without waiting)
RESCUE -> RESCUING (re-rescue node)
RESCUE -> DELETING (delete rescued instance)
RESCUE -> UNRESCUING (unrescue node)
UNRESCUING -> UNRESCUEFAIL (unrescue fails)
UNRESCUING -> ACTIVE (unrescue succeeds)
UNRESCUEFAIL -> RESCUING (re-rescue node after failed unrescue)
UNRESCUEFAIL -> UNRESCUING (re-unrescue node after failed unrescue)
UNRESCUEFAIL -> DELETING (delete instance that failed unrescuing)
RESCUEFAIL -> RESCUING (re-rescue after rescue failed)
RESCUEFAIL -> UNRESCUING (unrescue after failed rescue)
RESCUEFAIL -> DELETING (delete instance after failed rescue)

state machine impact

最新文章

  1. MySQL MVCC(多版本并发控制)
  2. Java:类与继承
  3. C++与C的指针的不同
  4. NGUI缓动函数
  5. leetcode150 Evaluate Reverse Polish Notation
  6. SQL CAST, CONVERT 比较
  7. [SQL]sql语句bug
  8. JAVA基础之正则表达式
  9. pdf文件流生成pdf文件
  10. ssh 综合
  11. 【笔记】Loadrunner添加OS类型为Windows的服务器(Win7)
  12. 纪中集训 Day 6
  13. 51nod 1203 jzplcm
  14. 【开发技术】 B/S、C/S的区别
  15. RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作)
  16. WinServer-FTP搭建
  17. 1023. Have Fun with Numbers (20)
  18. DevExpress GridView 整理(转)
  19. [ ArcGIS for Server 10.1 系列 ] - 重新创建Site
  20. [R]统计工具包

热门文章

  1. pyinstaller打包后的exe退出时,类中的__del__不执行问题
  2. git优点缺点(简单介绍)
  3. centos 6.5 配置nginx环境
  4. jQuery deferred 使用心得
  5. 五、@property的参数
  6. 一些简单的Js代码的封装
  7. element-UI时间控件:日期时间的选择范围的控制方法
  8. MacBookPro 存储空间优化
  9. Scott Young-《如何高效学习》
  10. 洛谷P1968 美元汇率