• 第 5 章 Nova


    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

  • 相关阅读:
    [转]Asp.Net 备份和恢复SQL SERVER 数据库
    alert 的封装
    using(sqlConnection conn=new sqlConnection) 中using的作用
    dotnet 上传大文件的配置的方法
    allowDefinition='MachineToApplication'
    转 Server Application Error报错信息的解决方案
    url 自动加入链接
    MVC中使用RadioButtonFor
    linux iptables squid 透明代理
    linux iptables网关配置,端口转发
  • 原文地址:https://www.cnblogs.com/gsophy/p/11024435.html
Copyright © 2020-2023  润新知