openstack中创建一个虚拟机经过的51步
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,一、前言本文在林海峰老师"openstack创建一个VM所需的29步"基础上进行了补充和修改,文中只用到了openstack六个核心组件,为了便于理解,架构中不同组件内的rabbit mq和db为同一
千家信息网最后更新 2026年11月01日openstack中创建一个虚拟机经过的51步
一、前言
本文在林海峰老师"openstack创建一个VM所需的29步"基础上进行了补充和修改,文中只用到了openstack六个核心组件,为了便于理解,架构中不同组件内的rabbit mq和db为同一个(可以为每个组件配置单独的db和rabbit mq)。openstack组件之间通过REST调用,组件内通过RPC协议通信,RPC协议又是基于AMQP模型实现的,rabbit mq就是运用该模型的一款软件。
二、概述
以现实中的PC举例来说明openstack创建的VM,一个PC要能正常工作它需要具备:计算单元、系统、网络和存储单元这四个基本要素,对应openstack中实现该功能的组件分别为:nova、glance、neutron和cinder,以下就详细说明一个VM创建时所经过的具体步骤。
三、创建VM的过程详解
上图是openstack上发起一个创建VM请求到VM创建完成的全过程,以下对上述51步进行详细解释:
- 用户通过horizon或者cli发起一个创建VM请求时,首先去keystone进行认证;
- 认证通过后,keystone将结果返回给用户,其中就包含用户权限的token令牌;
- 用户通过token像nova-api发起创建虚拟机的而请求;
- nova-api首先去keystone验证用户的token是否有效;
- keystone将认证后的结果返回给nova-api;
- nova-api将用户要创建VM的信息,如CPU、内存、网络及硬盘等存入数据库;
- 存储完成后,数据库将结果返回给nova-api;
- nova-api将要创建VM的信息扔到消息队列;
- nova-scheduler从消息队列中接收到该信息;
- nova-shceduler从数据库中查询可承载VM的物理服务器;
- 数据库将可用的物理服务器反馈给nova-scheduler,它根据权重最终选出1台物理机承载VM;
- nova-scheduler将最终承载VM的物理机信息扔到消息队列;
- 被选中物理服务器上的nova-compute接收到该消息;
- nova-compute将查询请求扔到消息队列,请求获得用户需要创建VM的flavor类型;
- nova-conductor从消息队列中接收到请求。该组件的作用是防止VM在被攻破后被当作跳板直接***数据库,大规模环境下,该组件可能会成为瓶颈;
- nova-conductor去数据库查询用户要创建的flavor类型;
- 数据库将查询到的结果反馈给nova-conductor;
- nova-conductor将用户需要创建VM的flavor类型扔到消息队列;
- nova-conpute获取到flavor类型,至此,nova-compute知道用户需要创建的VM都需要包含哪些资源;
- nova-compute向glance-api发起获取镜像请求;
- glance-api向keystone进行认证;
- keystone将认证后的结果返回给glance-api(glance组件之间通信不经过rabbit mq);
- glance-api将任务交由glance-registry处理,glance-registry负责存储系统镜像的元数据;
- glance-registry向db查询创建VM需要的镜像及镜像的存放位置;
- glance-registry将结果返回给glance-api;
- glance-api去存放镜像的对象存储上获取镜(此处的glance模式是V1版本,在V2版本中取消了glance-registry,glance-api直接连db和image store);
- glance-api将获取到的镜像结果反馈给nova-compute,至此,系统镜像已具备;
- nova-compute向neutron-server发起创建网络请求(neutron-server此处就是起到api的作用,只是名字不叫api);
- neutron-server去keystone进行认证;
- neutron-server将需要创建网络的请求扔到消息队列;
- neutron-plugins从消息队列中接收到该请求;
- neutron-plugins去db中获取要创建的网络使用的plugin以及要创建网络的网络类型和机制类型;
- neutron-plugins将获取到的信息扔到消息队列;
- neutron-agents从消息队列收到该信息后执行网络创建;
- neutron-agents将创建的相关信息保存到数据库中;
- neutron-agents创建完成后将消息扔到消息队列;
- neutron-server从消息队列中收到创建完成的信息;
- neutron-server将该信息反馈给nova-compute,至此,网络条件具备;
- nova-compute向cinder-api发起持久存储的请求;
- cinder-api首先会去keystone进行身份认证;
- 认证通过后将需要创建持久化存储的信息扔到消息队列;
- cinder-scheduler从消息队列中接收到信息;
- cinder-scheduler去db上查询哪些物理主机可以提供持久存储,并根据权中选取出1台;
- cinder-scheduler将结果扔到消息队列;
- 被选中主机上的cinder-volume接收到该消息;
- cinder-volume调用后端存储驱动,创建持久化存储设备,如LVM等;
- cinder-volume将创建好的持久化存储信息存到数据库中;
- cinder-volume将创建好的结果扔到消息队列;
- cinder-api从消息队列中接收到该消息;
- cinder-api将该消息反馈给nova-compute,至此,一个VM所需要的计算、系统镜像、网络、存储四个基本条件都已具备;
- nova-compute调用hypervisor创建VM,hypervisor可以是KVM、XEN、VMware等。
以上就是openstack中一个VM从用户发起请求到创建所需要经历的步骤,如果用到的组件不止示例中的四个,依然是nova-compute向相应组件的api发起请求,待所有条件都具备后,再调用hypervisor创建VM。
消息
队列
信息
用户
组件
存储
数据
网络
数据库
结果
镜像
认证
物理
类型
查询
系统
至此
就是
服务器
条件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网企业
广州百单互联网科技有限公司
腾讯阿里互联网科技
安徽鑫晟辉互联网科技
朗涯互联网科技
互联网科技论文
小马过河互联网科技
科技互联网公司logo
上海亿帐通互联网科技
美国互联网前沿科技
互联网科技公司需要的职位
银川新华互联网科技职业技术培训学校图片
宜昌元轩互联网科技有限公司
互联网媒体平台算高科技产业
科技类公司包括互联网吗
南通创西澳互联网科技有限公司
上海乐五互联网科技有限公司
保山互联网科技靠谱吗
易租星互联网科技有限公司
长沙易易互联网科技有限公司
中国互联网科技股
壹账通互联网科技
衡水科技产业互联网平台
团飞科技与伯堂互联网服务平台
互联网科技有哪些公司
互联网科技公司有风险吗
工业互联网山东科技大学
互联网科技股为什么大涨
互联网科技企业商标注意事项
长沙易易互联网科技有限公司