Resize Instance 操作详解

Resize 的作用是调整 instance 的 vCPU、内存和磁盘资源。

Instance 需要多少资源是定义在 flavor 中的,resize 操作是通过为 instance 选择新的 flavor 来调整资源的分配。

因为 instance 需要分配的资源发生了变化,在 resize 之前需要借助 nova-scheduler 重新为 instance 选择一个合适的计算节点,如果选择的节点与当前节点不是同一个,那么就需要做 Migrate。

所以本质上讲:

Resize 是在 Migrate 的同时应用新的 flavor。

Migrate 可以看做是 resize 的一个特例: flavor 没发生变化的 resize,这也是为什么 migrate 实际上是在执行 resize 操作。

下面是 Resize instance 的流程图

1、向 nova-api 发送请求

2、nova-api 发送消息

3、nova-scheduler 执行调度

4、nova-scheduler 发送消息

5、nova-compute 执行操作

Resize 分两种情况:

  • nova-scheduler 选择的目标节点与源节点是不同节点。

操作过程跟 Migrate 几乎完全一样,只是在目标节点启动 instance 的时候按新的 flavor 分配资源。

同时,因为要跨节点复制文件,也必须要保证 nova-compute 进程的启动用户(通常是 nova,也可能是 root,可以通过 ps 命令确认)能够在计算节点之间无密码访问。

  • 目标节点与源节点是同一个节点。

则不需要 migrate。

详细分析:

1、向 nova-api 发送请求

客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“帮我 Resize 这个 Instance”

选择新的 flavor

点击 Resize 按钮

2、nova-api 发送消息

nova-api 向 Messaging(RabbitMQ)发送了一条消息:“Resize 这个 Instance”。

查看源代码 /opt/stack/nova/nova/compute/api.py,方法是 resize_instance。

3、nova-scheduler 执行调度

nova-scheduler 收到消息后,会为 instance 选择合适的目标计算节点。

4、nova-scheduler 发送消息

nova-scheduler 发送消息,通知计算节点可以迁移 instance 了。

源代码在 /opt/stack/nova/nova/scheduler/filter_scheduler.py ,方法为 select_destinations

5、nova-compute 执行操作

(1)在目标节点上启动 instance,过程与 launch instance 非常类似。

具体步骤如下:

1、按新的 flavor 为 instance 准备 CPU、内存和磁盘资源

2、关闭 instance

3、创建 instance 镜像文件

4、将 instance 的目录备份一份,命名为_resize,以便 revert。

5、创建 instance 的 XML 定义文件

6、准备虚拟网络

7、启动 instance

(2)Confirm

这时,instance 的状态处于“Confirm or Revert Resize/Migrate”状态,需要用户确认或者回退当前的迁移操作,实际上给了用户一个反悔的机会。

当我们按下 Confirm 按钮后:

1、nova-api 接收到 confirm 的消息

2、删除计算节上备份的 instance 目录 <instance_id>_resize

(3)Revert

如果执行 Revert 操作:

1、nova-api 接收到 revert 的消息

2、在计算节点上关闭 instance

3、通过备份目录 <instance_id>_resize 恢复 instance 目录。

4、重新启动 instance

---------------------------------------------引用来自--------------------------------------------------------------

https://www.cnblogs.com/CloudMan6/p/5548294.html

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587787&idx=1&sn=3b1503699b9cfd1efc42233a04f69cfc&chksm=8d308152ba47084495f66aad0338d6780ab009527bf92666c53c08682d3fb1443846d0331cf9&scene=21#wechat_redirect

转载于:https://www.cnblogs.com/gsophy/p/11024435.html

第 5 章 Nova - 041 - Resize Instance 操作详解相关推荐

  1. O034、 Nova Pause / Resume Instance 操作详解

    参考https://www.cnblogs.com/CloudMan6/p/5496825.html 本节通过日志详细分析 Nova Pause / Resume 操作. 有时需要短时间暂停 inst ...

  2. Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34)

    Pause/Resume Instance 操作详解 - 每天5分钟玩转 OpenStack(34) 本节通过日志详细分析 Nova Pause/Resume 操作. 有时需要短时间暂停 instan ...

  3. Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40)

    Migrate 操作的作用是将 instance 从当前的计算节点迁移到其他节点上. Migrate 不要求源和目标节点必须共享存储,当然共享存储也是可以的. Migrate 前必须满足一个条件:计算 ...

  4. Unshelve Instance 操作详解 - 每天5分钟玩转 OpenStack(39)

    上一节我们 shelve instance 到 Glance,本节讨论如何通过 unshelve 操作恢复该 instance. 因为 Glance 中保存了 instance 的 image,uns ...

  5. Rebuild Instance 操作详解 - 每天5分钟玩转 OpenStack(37)

    上一节我们讨论了 snapshot,snapshot 的一个重要作用是对 instance 做备份. 如果 instance 损坏了,可以通过 snapshot 恢复,这个恢复的操作就是 Rebuil ...

  6. Snapshot Instance 操作详解 - 每天5分钟玩转 OpenStack(36)

    本节我们通过日志详细讨论 instance 的 snapshot 操作. 有时候操作系统损坏得很严重,通过 Rescue 操作无法修复,那么我们就得考虑通过备份恢复了.当然前提是我们之前对instan ...

  7. Start Instance 操作详解 - 每天5分钟玩转 OpenStack(31)

    本节通过日志文件详细分析 instance start 操作. 下面是 start instance 的流程图 向 nova-api 发送请求 nova-api 发送消息 nova-compute 执 ...

  8. O036、Snapshot Instance 操作详解

    参考https://www.cnblogs.com/CloudMan6/p/5510296.html 有时候系统损坏的很严重,通过 Rescue 操作无法修复,那么我们就得重新考虑通过备份恢复了.当然 ...

  9. O037、Rebuild Instance 操作详解

    参考https://www.cnblogs.com/CloudMan6/p/5516852.html 上一节我们学习了 snapshot ,snapshot 一个重要的作用就是对 Instance 做 ...

最新文章

  1. CSS,点击去除虚线边框代码
  2. python职能-最受欢迎的10家互联网公司揭秘Python薪资!
  3. 数值分析与算法-喻文健-国科大
  4. 找出数组中被其他元素整除的元素_「每日一题」数组中重复的数字
  5. 接受许可协议 将禁用_知识产权小知识|知识产权许可
  6. 使用Idea从github上获取项目
  7. 启动php-fpm时报错
  8. 解决点击事件让背景变红,在点击背景变正常,并且可以多选的效果
  9. IBM原厂资深专家:DB2优化器和成本模型分析
  10. 从虚幻4动画系统与控制器交互理解数据驱动(一)古老的写法
  11. PHP中文分词的实现
  12. Spring Cloud 之 Eureka.
  13. python语言与存货管理,(二)实现对库存管理系统的模块化编程
  14. VC虚拟键值表(详细介绍)
  15. waterline mysql_sails 框架下的 orm 实现 - Waterline
  16. PLC增减计数器示例
  17. Power BI中的透视列和逆透视
  18. iOS 将状态栏设置成白色
  19. RocketMQ 的安装和可视化界面
  20. 用Python实现单词尾缀的分析及提取

热门文章

  1. ajax传输是用utf8,使用ajax时UTF8编码不起作用
  2. python opencv调节图片亮度与对比度
  3. “是男人就下一百层”h5游戏全网最详细教学、全代码,js操作
  4. “adb不是内部或外部命令,也不是可执行的应用程序”错误原因及解决方法
  5. 分布式锁的使用与注意事项
  6. Codewars Vasya - Clerk--6 kyu--Python解法
  7. python中的logging日志
  8. Docker运行sonarqube-(代码质量检测平台)
  9. 软件测试学java,软件测试学习Java的内存模型
  10. python余弦相似度文本分类_Jaccard与cosine文本相似度的异同