openstack中创建一个虚拟机经过的51步
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,一、前言本文在林海峰老师"openstack创建一个VM所需的29步"基础上进行了补充和修改,文中只用到了openstack六个核心组件,为了便于理解,架构中不同组件内的rabbit mq和db为同一
千家信息网最后更新 2024年11月11日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安全错误
数据库的锁怎样保障安全
交通银行软件开发中心体检
软件开发不能做的软件
推荐的数据库管理oracle
EPS数据库数据可靠吗
天津智能化软件开发制造价格
入侵数据库女装大佬
门户网站一般用什么数据库
系统和网络安全教程
四川大学计算机和网络安全
exe软件开发环境有哪些
数据库大对象的返回方式
软件开发交费方式
陕西思安信息网络技术有限公司
网络技术中的7层模型
数据库实例 无法访问
主从分离与缓存数据库
并发读取数据库中的最大值
新乡享游网络技术为啥不停招人
服务器安什么安全软件
不同文档引用数据库
阿里云管理服务器
软件开发模型有用例模型吗
数据库连接属于什么设计模式
美元指数服务器app
网络技术学什么技能好
打卡机怎么没数据库
数据库会话一致性验证工具
关于网络安全漏洞的提示
软件开发调用地图
centos mc服务器