OpenStack-liberty版虚拟机创建流程(八)

虚拟机创建流程:

根据官方提供的流程图,我个人将OpenStack云主机的创建步骤分为四个阶段:

1、KeyStone验证阶段

2、Nova服务组件交换

3、OpenStack其它服务交换

4、执行创建

第一阶段:KeyStone验证

  1. 用户使用Dashboard Horizon或者命令行CLI,通过REST API给Identity 服务Keystone发送用户凭据(credentials)并验证(authenticates)。Keystone使用用户凭据进行验证,然后返回一个auth-token。然后后续操作就可以使用这个auth-token通过REST调用请求OpenStack其他的组件。
  2. Horizon或者CLI将launch instance 或者nova-boot转换形成为一个REST API的请求发送给nova-api。
  3. nova-api接到这个请求后,首先向keystone发送一个请求来确认auth-token是否有效和是否有访问权限。Keystone确认auth-token后,发送一个包含角色和权限的更新后的认证头。
  4. nova-api和Nova数据库交互,将用户的创建虚拟机的请求在nova 数据库里记录下来。

第二阶段:Nova服务组件交互

  1. nova-api以rpc.call的方式发送一个请求给nova-schedule,让nova-scheduler去选择一个计算节点来创建虚拟机。注意是通过消息队列发送给nova-scheduler。
  2. nova-schedule调度服务会侦听Scheduler队列,从队列中获取数据。
  3. nova-scheduler和Nova数据库交互,通过调度算法,也就是filtering 和weighing最终选择一台运行nova-compute的计算节点,然后nova-schedule将虚拟机信息使用rpc.cast的模式发送至nova-compute.计算节点队列。让nova-compute在选择好的计算节点中去创建实例。
  4. Nova-Compute从队列获取请求。
  5. nova-compute发送一个rpc.call 请求给nova-conductor,去获取实例的信息,比如host ID和选择的Flavor(CPU、内存和磁盘)。
  6. nova-conductor从队列中获取请求。
  7. nova-conductor与nova的数据库进行交互。nova-conductor返回实例的信息。nova-compute从队列中获取实例的信息。

第三阶段:OpenStack其它服务交互

在第二阶段nova-compute为了获取到创建实例所需要的资源,比如镜像、网络、存储。会使用在第一阶段用户验证后获取到的auth-tokon分别和镜像服务Glance的glance-api,网络服务Neutron的neutron-server已经块存储服务Cinder的cinder-api进行交互。而且每次对方收到请求后都需要到keystone上去验证auth-token是否有效。

  1. nova-compute使用验证后获取的auth-token发起一个REST调用给glance-api获取镜像。然后nova-compute使用使用镜像ID。从镜像服务中得到Image URI。从(image storage)镜像存储中加载镜像。

13.glance-api去Keystone上验证auth-token是否有效。如果有效,nova-compute就可以获取镜像的元数据metadata。

14.nova-compute使用验证后获取的auth-token执行一个REST调用给neutron-server,让neutron-server给分配和配置网络,为实例分配IP地址。

15.neutron-Server去Keystone验证auth-token是否有效。如果有效,nova-compute就可以获取到网络的相关信息。

16.nova-compute使用验证后获取的auth-token执行一个REST调用给cinder-api,给实例附加卷存储,也就是云硬盘。

17.cinder-api去Keystone验证auth-token是否有效,如果有效,那么nova-compute就可以获取到块存储的相关信息。

第四阶段:执行创建

在第三阶段,nova-compute已经通过Glance、Neutron和Cinder分别获取到了镜像、网络和存储相关的信息。那么在第四阶段nova-compute就开始创建虚拟机了。

18.nova-compute为hypervisor的驱动生成数据,并且通过libvirt或者其他API让hypervisor执行请求来创建虚拟机。这样虚拟机创建的交互流程基本结束,剩下的步骤就是hypervisor最终创建虚拟机的流程。

然后nova-api去轮训nova database,查看虚拟机的状态是否变成正确创建虚拟机的状态(Active,none,sunning),若状态正确,则虚拟机创建正常成功。

原文地址:http://blog.51cto.com/smoke520/2298976

时间: 2024-08-05 13:56:57

OpenStack-liberty版虚拟机创建流程(八)的相关文章

十二、openstack虚拟机创建流程

一.创建虚拟机拓扑图 二.流程讲解 虚拟机创建过程: 界面或命令行通过RESTful API向keystone获取认证信息. keystone通过用户请求认证信息,并生成auth-token返回给对应的认证请求. 界面或命令行通过RESTful API向nova-api发送一个boot instance的请求(携带auth-token). 4.   nova-api接受请求后向keystone发送认证请求,查看token是否为有效用户和token. keystone验证token是否有效,如有效

【openstack N版】——创建云主机

一.启动实例 1.1 已准备服务介绍 MySql:为各个服务提供数据存储. RabbitMQ:为各个服务之间通信提供交通枢纽. keystone:为各个服务之间通信提供认证和服务注册. Glance:为虚拟机提供镜像管理. Nova:为虚拟机提供计算资源. Neutron:为虚拟机提供网络资源. 1.2 网络(flat) 1.2.1创建虚拟网络 1 #share 允许所有项目使用虚拟网络 2 [[email protected] ~]# openstack network create --sh

Openstack(Ocata)镜像创建流程分析

O版中镜像RESFUL请求默认是v2,与v1相比更复杂了.这里主要分析镜像创建(glance image-create)流程. glanceclient的命令do_image_create(v2/shell.py)分别执行了image = gc.images.create(**fields).do_image_upload(gc, args)两步,分别对应api中create.upload方法 1.glance.api.v2.images:ImageController中包含了create.in

Openstack深入了解虚拟机

续Openstack虚拟机创建流程 在控制节点也安装一个计算服务也变成一个计算节点 yum -y install openstack-nova-compute 启动并且设置开机启动 systemctl start openstack-nova-compute systemctl enable openstack-nova-compute 修改配置文件/etc/nova/nova.conf 在[vnc]加入以下 [vnc] novncproxy_base_url=http://192.168.0.

openstack之虚拟机的创建流程

这篇博文静静的呆在草稿箱大半年了,如果不是因为某些原因被问到,以及因为忽略它而导致的损失,否则我也不知道什么时候会将它完成.感谢这段时间经历的挫折,让我知道不足,希望你能给我更大的决心! 本文试图详细地描述openstack创建虚拟机的完整过程,从用户发起请求到虚拟机成功运行,包括客户端请求的发出.keystone身份验证.nova-api接收请求.nova-scheduler调度.nova-computer创建.nova-network分配网络.对于每一个模块在创建虚拟机的过程中所负责的功能和

别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5)

八.KVM 这一步,像virsh start命令一样,将虚拟机启动起来了.虚拟机启动之后,还有很多的步骤需要完成. 步骤38:从DHCP Server获取IP 有时候往往数据库里面,VM已经有了IP,很多人就认为虚拟机就得到了IP,可是总是连不进去,不知从何入手,其实界面上能看到VM的IP和VM真正从DHCP获得IP是两回事情. 步骤39:cloud-init连接Metadata Server,并注入Key Metadata Server有很复杂的架构,cloud-init连接Metadata

别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(3)

四.Nova-compute 步骤17:nova-compute接收到请求后,通过Resource Tracker将创建虚拟机所需要的资源声明占用 步骤18:调用Neutron API配置Network,虚拟机处于Networking的状态 需要注意的是,这一步虽然是配置Network,但是主要是数据结构的准备,真正的设备并没有创建. 由于在创建虚拟机的时候,我们指定了将虚拟机放到哪个private network里面,因而在创建真正的设备之前,所有的信息都需要准备好. 这里的知识点设计Netw

Openstack针对nova,cinder,glance使用ceph的虚拟机创建机制优化

 今天在开源中国社区看到有如下一个问题: 已经成功把ceph作为cinder和 glance的后端,但是如果作为nova的后端,虚拟机启动速度非常慢,网上查了一下是因为openstack创建虚拟机的时候通过ceph取镜像创建虚拟机再把虚拟机存回ceph的步骤浪费了很多时间,是否有办法不把镜像取到本地,而是直接在ceph的存储池里完成虚拟机的创建呢? 实际上,我当前也是把ceph作为nova,cinder,glance三者的后端,创建虚拟机速度非常慢.查了一下相关和资料,是有新的处理方式,当前

Openstack liberty 创建实例快照源码分析1

Openstack liberty中也支持对云主机执行快照,快照是备份系统中一种常用的数据保护技术,在生产系统故障后,能通过快照将系统快速恢复到快照时间点:那Openstack中的云主机快照是否也支持这种故障恢复呢?请看下文: Openstack支持对处于运行或者停止状态的云主机执行快照,另外Openstack既可以从镜像启动云主机,也可以从启动磁盘启动云主机,根据条件组合,可以执行下面4中快照: 镜像启动云主机的离线快照 镜像启动云主机的在线快照 磁盘启动云主机的离线快照 磁盘启动云主机的在线