zoukankan      html  css  js  c++  java
  • openstack-虚拟机创建流程

    虚拟机创建流程

    (65)
    1、通过命令行或dashboard登录时需要提供相应的账号名及密码,请求会交由keystone进行认证,keystone会通过查询数据库,查看到当前用户的密码以及用户权限(当密码正确并且有权限创建虚拟机,则把请求交由nova api)。
    
    2、keystone通过用户请求认证信息,生成一个临时auth-token字符串返回给对应的认证请求。
    
    3、dahsboard或命令行发送一个创建虚拟机的请求到nova-api(携带上一步的auth-token)。
    
    4、nova-api接收请求后向keystone发送认证请求,查看token是否为有效用户和token。
    
    5、keystone验证nova-api发送过来的token是否有效,并将结果返还给nova-api。
    
    6、通过认证后,nova-api通过nova-conductor访问数据库,把创建虚拟机的元数据写入到数据库中。
    
    7、虚拟机数据写入数据库完成。
    
    8、nova-api通过rpc远程调用rabbitmq,向nova-scheduler请求是否有创建虚拟机的资源(可用node节点)。
    
    9、nova-scheduler进程会监听rabbitmq消息队列,获取nova-api请求并进行消费。
    
    10、nova-scheduler通过查询nova数据库中计算资源的情况,并通过调度算法计算符合虚拟机创建需求的主机。
    
    11、对于有符合虚拟机创建的主机,nova-scheduler更新数据库中虚拟机对应的物理主机资源信息。
    
    12、nova-scheduler通过rpc远程调用向nova-compute发送对应的创建虚拟机请求的消息到rabbitmq(虚拟机创建在哪个node节点上)。
    
    13、nova-compute从对应的消息队列中获取创建虚拟机请求的消息,会判断是否是在自己节点进行创建,如果不是在自己节点,则不会进行虚拟机创建。
    
    14、nova-compute通过rpc调用(把消息发送到rabbitmq)向nova-conductor请求获取虚拟机的类型(Flavor)。
    
    15、nova-conductor从消息队列中拿到nova-compute请求信息。
    
    16、nova-conductor根据消息从nova数据库中查询虚拟机对应的类型信息。
    
    17、nova-conductor从数据库中获取到虚拟机的对应信息、
    
    18、nova-conductor把虚拟机信息通过消息的方式发送到rabbitmq消息队列中。
    
    19、nova-compute从对应的消息队列中获取到虚拟机对应的相关信息。
    
    20、nova-compute请求glance-api获取创建虚拟机所需镜像。
    
    21、glance-api向keystone认证token是否有效,并返回验证结果。
    
    22、token验证通过后,nova-compute获取虚拟机镜像信息(镜像的URL)。
    
    23、nova-compute请求neutron-server获取创建虚拟机所需要的网络信息。
    
    24、neutron-server向keystone认证token是否有效,并返回验证结果。
    
    25、token验证通过后,neutron-server会给nova-compute返回一个DHCP分配的虚拟机IP地址、网关、子网掩码、DNS。
    
    26、如果安装了cinder,则nova-computecinder-api会获取创建虚拟机所需的持久化存储信息。
    
    27、cinder-api向keystone认证token是否有效,并返还验证结果。
    
    28、token通过后,nova-compute获取虚拟机持久化信息,并且cinder-api会调用cinder-storage,在cinder-storage节点创建等同于虚拟机大小的卷
    
    29、如果没有安装cinder,nova-compute根据实例(instance)的信息调用配置的虚拟化驱动来创建虚拟机(由当前物理机通过libvirt调用KVM创建虚拟机)。
    
  • 相关阅读:
    [PHP] ::class的具体作用
    [linux] 查看所有的系统用户
    [PHP] composer install和composer update的区别
    [PHP] 解决composer install报错: it could not be found in any version, there may be a typo in the package name
    [git] git中origin的含义
    [git] 打标签命令
    [git] git clone指定分支代码
    [git]git中分支的概念
    [PHP] 对象和引用
    [正则]正则表达式里面的?: ?! ?= ?<=
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/13299712.html
Copyright © 2011-2022 走看看