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创建虚拟机)。
    
  • 相关阅读:
    ADF中遍历VO中的行数据(Iterator)
    程序中实现两个DataTable的Left Join效果(修改了,网上第二个DataTable为空,所处的异常)
    ArcGIS api for javascript——鼠标悬停时显示信息窗口
    ArcGIS api for javascript——查询,然后单击显示信息窗口
    ArcGIS api for javascript——查询,立刻打开信息窗口
    ArcGIS api for javascript——显示多个查询结果
    ArcGIS api for javascript——用图表显示查询结果
    ArcGIS api for javascript——查询没有地图的数据
    ArcGIS api for javascript——用第二个服务的范围设置地图范围
    ArcGIS api for javascript——显示地图属性
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/13299712.html
Copyright © 2011-2022 走看看