10.openstack创建虚拟机的流程

openstack创建虚拟机的流程

1.在命令行或者web界面执行创建虚拟机的命令

2.命令提交后会找keystone去验证身份,验证当前用户是否能够验证通过获得token,验证失败直接返回401

3.验证通过后带着创建虚拟机的请求及token去访问nova-api,请求中包含用什么镜像、网络、什么规格主机、什么安全组、虚拟机名字这些信息都需提供

4.nova-api收到创建虚拟机的请求之后,会先把请求写到数据库中

5.nova-api会给消息队列发一条消息,发给nova-scheduler

6.nova-scheduler接收到任务后,会去读取数据库,读取要创建的实例的配置要求,其次读取计算节点当前的资源剩余情况,方便后续调度,如果发现所有计算节点都不满足创建虚拟机的要求,就会返回报错,没有有效的主机,计算节点资源满足的话就选一个合适的计算节点用于创建虚拟机

7.挑出合适的计算节点后,通过消息队列,直接将创建虚拟机的消息发给计算节点

8.计算节点收到消息后,去数据库中了解要创建的虚拟机的配置,但是计算节点不直接连接数据库,计算节点会通过消息队列去找nova-conductor,nova-conductor会连接数据库,将数据取出后通过消息队列返回给计算节点

9.nova-compute计算节点拿到虚拟机的配置后才开始创建虚拟机

  1. 根据配置指定的镜像,去glance镜像服务下载对应的镜像

  2. glance镜像服务收到请求后,会先去keystone验证一下,看该请求是否有权限获得镜像(不是谁都能获取镜像的),有权限就返回镜像的获取地址,没权限直接拒绝。随之镜像下载失败,虚拟机启动失败。

  3. 假设虚拟机下载镜像成功,接下来虚拟机还要上网,就要去找neutron-server网络服务获取IP地址,neutron-server也需要去keystone进行验证该请求是否有权限获取IP地址。验证通过后就安排DHCP-agent分配IP地址,neutron-plugins-agent创建桥接网卡。

  4. 如果将实例创建在卷上的话,就需要找cinder存储服务分配一块硬盘。 (虚拟机不创建在卷上的话,就不需要去找cinder以及产生相关步骤了)

  5. cinder也需要去keystone进行验证该请求,验证通过后,通过cinder-scheduler把分配的任务安排下去,最终安排了一个cinder-volume来提供请求的硬盘。

  6. nova-compute会提前把内存和cpu准备出来,硬盘也有了就把所有的资源都准备好了。

  7. 最后把虚拟机通过Hypervisor跑起来(kvm)


整个流程可以分成两大部分

第一部分是nova节点内部的调用,第二部分是nova-compute与其他服务的调用(glance,nuetron,cinder等),每步调用都需要通过keystone进行验证

相关推荐
360智汇云14 小时前
OpenStack Nova 虚拟机网卡挂卸载性能优化实践
性能优化·openstack
eucalyptus-DE3 天前
Nova 计算节点故障排查指南
服务器·openstack
做咩啊~17 天前
7.cinder对接nfs后端存储
openstack
isyangli_blog17 天前
openstack 下载打包整套环境
服务器·网络·openstack
isyangli_blog17 天前
openstack 界面发放一台云主机
openstack
isyangli_blog18 天前
Openstack V 版搭建
openstack
isyangli_blog19 天前
openstack V版 本地源方式搭建
运维·openstack
Yana.nice25 天前
华为云计算(FusionAccess/FusionCompute/OpenStack)平台
华为云·openstack
huhy~1 个月前
基于Ubuntu 24.04 LTS 搭建OpenStack F 版
android·ubuntu·openstack