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进行验证

相关推荐
Linux界最忧郁之人10 天前
华为云ECS&IMS&AS实战|弹性云服务器、私有镜像、弹性伸缩完整实验
linux·运维·服务器·centos·华为云·openstack
知已难寻10 天前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
xbzb11 天前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron
xbzb12 天前
OpenStack 网络管理(实操):建网络、连路由、浮动 IP 与安全组
网络·安全·openstack·ip·安全组·浮动
xbzb14 天前
OpenStack 计算管理:实例锁定后被普通用户解锁了?避坑实操
openstack·实例·解锁·用户·计算·锁定
静以修身zzz14 天前
OpenStack对象存储-Swift、OpenStack编排管理-heat、OpenStack网络管理-neutron
linux·运维·服务器·架构·openstack·swift
知已难寻15 天前
01 · OpenStack的认证管理 Keystone
运维·服务器·云原生·云计算·openstack
青峰讲运维15 天前
OpenStack Heat 编排:用模板一键交付云业务,告别手动点页面
开发语言·php·openstack
青峰讲运维16 天前
OpenStack 存储深度解析|Cinder 块存储 + Swift 对象存储原理与完整实操(Yoga)
开发语言·openstack·swift
知已难寻16 天前
00 · OpenStack 总纲——从云计算到 OpenStack 全景
运维·服务器·云原生·云计算·负载均衡·openstack·perl