[转]Request Flow for Provisioning Instance in Openstack

One of the most important use-case in any cloud is provisioning a VM . In this article we shall do a walk through about an instance(VM) being provisioned in a Openstack based cloud. This article deals with the request flow and the component interaction of various projects under Openstack. The end result will be booting up a VM.
Provisioning a new instance involves the interaction between multiple components inside OpenStack :
- CLI Command Line Interpreter for submitting commands to OpenStack Compute.
- Dashboard (“Horizon”) provides the interface for all the OpenStack services.
- Compute (“Nova”) retrieves virtual disks images(“Glance”) , attach flavor and associated metadata and transforms end user API requests into running instances.
- Network (“Quantum”) provides virtual networking for Compute which allows users to create their own networks and then link them to the instances.
- Block Storage (“Cinder”) provides persistent storage volumes for Compute instances.
- Image (“Glance”) can store the actual virtual disk files in the Image Store.
- Identity (“Keystone”) provides authentication and authorization for all OpenStack services.
- Message Queue(“RabbitMQ”) handles the internal communication within Openstack components such as Nova , Quantum and Cinder.
The request flow for provisioning an Instance goes like this:
- Dashboard or CLI gets the user credential and does the REST call to Keystone for authentication.
- Keystone authenticate the credentials and generate & send back auth-token which will be used for sending request to other Components through REST-call.
- Dashboard or CLI convert the new instance request specified in ‘launch instance’ or ‘nova-boot’ form to REST API request and send it to nova-api.
- nova-api receive the request and sends the request for validation auth-token and access permission to keystone.
- Keystone validates the token and sends updated auth headers with roles and permissions.
- nova-api interacts with nova-database.
- Creates initial db entry for new instance.
- nova-api sends the rpc.call request to nova-scheduler excepting to get updated instance entry with host ID specified.
- nova-scheduler picks the request from the queue.
- nova-scheduler interacts with nova-database to find an appropriate host via filtering and weighing.
- Returns the updated instance entry with appropriate host ID after filtering and weighing.
- nova-scheduler sends the rpc.cast request to nova-compute for ‘launching instance’ on appropriate host .
- nova-compute picks the request from the queue.
- nova-compute send the rpc.call request to nova-conductor to fetch the instance information such as host ID and flavor( Ram , CPU ,Disk).
- nova-conductor picks the request from the queue.
- nova-conductor interacts with nova-database.
- Return the instance information.
- nova-compute picks the instance information from the queue.
- nova-compute does the REST call by passing auth-token to glance-api to get the Image URI by Image ID from glance and upload image from image storage.
- glance-api validates the auth-token with keystone.
- nova-compute get the image metadata.
- nova-compute does the REST-call by passing auth-token to Network API to allocate and configure the network such that instance gets the IP address.
- quantum-server validates the auth-token with keystone.
- nova-compute get the network info.
- nova-compute does the REST call by passing auth-token to Volume API to attach volumes to instance.
- cinder-api validates the auth-token with keystone.
- nova-compute gets the block storage info.
- nova-compute generates data for hypervisor driver and executes request on Hypervisor( via libvirt or api).
The table represents the Instance state at various steps during the provisioning :

[转]Request Flow for Provisioning Instance in Openstack的更多相关文章
- An overview of the Spring MVC request flow
The Spring MVC request flow in short: When we enter a URL in the browser, the request comes to the d ...
- Spring MVC request flow
1. When we enter a URL in the browser, the request comes to the dispatcher servlet.The dispatcher se ...
- 别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(1)
还是先上图吧,无图无真相 别以为真懂Openstack!先别着急骂我,我也没有说我真懂Openstack 我其实很想弄懂Openstack,然而从哪里下手呢?作为程序员,第一个想法当然是代码,Code ...
- nova-compute 部署 instance 详解 - 每天5分钟玩转 OpenStack(28)
本节讨论 nova-compute,并详细分析 instance 部署的全过程. 先给大家道个歉:今天这篇文章的篇幅比以往要多一些,本来想分两次发,但考虑到文章的完整和系统性,还是一次发了出来,这次可 ...
- Openstack:Instance cannot ping by domain name
Issue: When you created an instance inside Openstack, you may find that you cannot ping address by d ...
- openStack ceilometer API
1.概述 Ceilometer是OpenStack中的一个子项目,它像一个漏斗一样,能把OpenStack内部发生的几乎所有的事件都收集起来,然后为计费和监控以及其它服务提供数据支撑.Ceilomet ...
- [转]Understanding OpenStack Authentication: Keystone PKI
The latest stable release of OpenStack, codenamed Grizzly, revolutionizes the way user authenticatio ...
- openstack系列文章(四)
学习 openstack 的系列文章 - Nova Nova 基本概念 Nova 架构 openstack Log Nova 组件介绍 Nova 操作介绍 1. Nova 基本概念 Nova 是 op ...
- Openstack 10 云环境安装
概述 资源规划 Undercloud Installation Overcloud Installation Trouble Shooting 附录 本指南介绍了如何使用 Red Hat OpenSt ...
随机推荐
- vue项目中使用less或者sass的方法
半年木有更新博客了... 前段时间一直在学习vue,开始记录一下遇到的问题吧 这篇文章主要是总结一下vue中使用less或者sass的方法,以less为例(style.less) 主要是两种 1.对于 ...
- 【转】.NET程序员提高效率的70多个开发工具
原文:.NET程序员提高效率的70多个开发工具 工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢?本文为各ASP.NET 开发者介绍一些高效实用的工具,涉及SQL 管理,VS插件 ...
- Linux静态设置CentOS 7虚拟机的IP
进入root ,输入命令:# vi /etc/sysconfig/network-scripts/ifcfg-ens33 .将DHCP协议获取IP,改为static静态,加上想要设置的IPADDR即可 ...
- 盯着这where or 终于出了点感觉
AND 和 OR 运算符 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录. 如果第一个条件和第二个条件中只要有 ...
- 10.spring-boot基于角色的权限管理页面实现
10.spring-boot基于角色的权限管理页面实现
- 解决Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
1.在eclipse的workspace里面找到该项目.settings文件夹 2.编辑org.eclipse.wst.common.project.facet.core.xml文件 <?xml ...
- 装了SVN软件,但是文件夹没有绿色和红色的图标显示
第一步: win+R,输入regedit,打开注册表.查找ShellIconOverlayIdentifiers,可以找到Tortoise相关的标签,这个时候会发现,这些标签都排在后面.需要在这些标签 ...
- asp.net上传图片到服务器
ASP.NET的FileUpload控件可用于上传文件到服务器.HoverTreeTop新增了一个“阅图”功能,图片就是用FileUpload上传的.阅图功能查看:http://hovertree.c ...
- 《笨方法学Python》加分题35
sys.exit 用于结束程序 from sys import exit # 进入黄金房间后的逻辑 def gold_room(): print("This room is full of ...
- Clinet/Server在工作线程中刷新页面数据的方法
Worker线程不能修改UI线程的状态(比如文本框里面的内容).解决的办法是写一个用来更新文本框内容的函数,然后在Worker线程里面通过BeginInvoke来利用delegate调用这个函数更新文 ...