OpenStack之Nova模块
Nova简介
nova和swift是openstack最早的两个组件,nova分为控制节点和计算节点,计算节点通过nova computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nova之间通信通过rabbitMQ队列进行通信。
Nova体系结构
Nova重要组件介绍
1.nova API
nova-api组件实现了RESTful API功能,是外部访问Nova的唯一途径。接收外部的请求并通过Message Queue将请求发送给其他的服务组件,同时也兼容EC2 API,所以也可以用EC2的管理工具对nova进行日常管理。
2.nova scheduler
nova scheduler模块在openstack中的作用是决策虚拟机创建在哪个主机(计算节点)上。决策一个虚拟机应该调度到某物理节点,需要分为两个步骤:
- 过滤(filter),过滤出可以创建虚拟机的主机
- 计算权值(weight),根据权重大小进行分配,默认根据资源可用空间进行权重排序
NOTE:
除了nova-conductor可以访问数据库之外,因为nova-scheduler是只读数据库,而nova-api对数据库的操作有Policy保护,所以它们也都是可以访问数据库的。但是最好还是仅通过nova-conductor来访问数据库。
3.nova-api-metadata
从实例中接收元数据请求。nova-api-metadata服务通常在nova-network安装时使用的是多宿主模式运行。
4.nova-compute
负责虚拟机的生命周期管理,创建并终止虚拟机实例的工作后台程序hypervisor api。例如:
- XenAPI for XenServer/XCP
- libvirt for KVM or QEMU
- VMwareAPI for VMware
基本上,守护进程接受来自队列并执行一系列系统命令,例如启动kvm实例并更新数据库中的状态。
5.nova-placement-api
跟踪每个计算提供者的仓库和使用情况。
6.nova-conductor模块
计算节点访问数据的中间件,nova-compute服务和数据库之间的中间件。它消除了对云数据库的直接访问。官方建议:不要将它部署到nova-compute服务运行。
7.nova-consoleauth守护进程
用于控制台的授权验证,授权控制台代理提供的用户令牌。此服务必须运行用于控制台代理工作。您可以运行任何类型的代理,而不是集群配置中的单nova-consoleauth服务。
8.nova-novncproxy守护进程
VNC代理,提供用于通过vnc连接访问运行实例的代理。支持基于浏览器的客户端客户端。
9.nova-spicehtml5proxy守护进程
提供一个代理,通过一个SPICE连接访问运行实例。支持基于浏览器的html 5客户端。
10.nova-xvpvncproxy守护进程
提供用于通过vnc连接访问运行实例的代理。支持一个特定于服务器的java客户机。
11.Queue
在守护进程之间传递消息的中心。通常使用RabbitMQ也可以用另一个基于AMQP的消息队列,例如ZeroMQ。
12.SQL database
存储大部分构建时间和运行时状态,用于云基础设施,包括:
- 可用实例类型
- 使用实例
- 可用网络
- 项目
理论上,OpenStack计算可以支持任何数据库。SQLite3数据库用于测试和开发工作,mysql,MariaDB和postgresql。
Nova创建虚拟机流程
虚机创建流程梳理
1.客户端使用自己的用户名密码请求认证。
2.keystone通过查询在keystone的数据库user表中保存了user的相关信息,包括password加密后的hash值,并返回一个token_id(令牌),和serviceCatalog(一些服务的endpoint地址,cinder、glance-api后面下载镜像和创建块存储时会用到)。
3.客户端带上keystone返回的token_id和创建虚机的相关参数,Post请求nova-api创建虚拟机
4.nova-api接收到请求后,首先使用请求携带的token_id来访问该api,以验证请求是否有效。
5.keystone验证通过后返回更新后的认证信息。
6.nova api检查创建虚拟机参数是否有效与合法。
检查虚拟机name是否符合命名规范,flavor_id是否在数据库中存在,image_uuid是否是正确的uuid格式
检查instance、vcpu、ram的数量是否超过配额。
7.当且仅当所有传参都有效合法时,更新nova数据库,新建一条instance记录,vm_states设为BUILDING,task_state设为SCHEDULING.
8.nova api 远程调用传递请求、参数给nova scheduler,把消息“请给我创建一台虚拟机”丢到消息队列,然后定期查询虚机的状态。
9.nova scheduler从queue中获取到这条消息
10.nova scheduler访问nova 数据库,通过调度算法,过滤出一些合适的计算节点,然后进行排序。
11.更新虚机节点信息,返回一个最优节点id给nova scheduler。
12.nova scheduler选定host之后,通过rpc调用nova-compute服务,把“创建虚机请求”消息丢给mq。
13.nova compute收到创建虚拟机请求的消息。
nova-compute有个定时任务,定期从数据库中查找到运行在该节点上的所有虚拟机信息,统计得到空闲内存大小和空闲磁盘大小。然后更新数据库compute_node信息,以保证调度的准确性。
14.nova compute通过rpc查询nova数据库中虚机的信息,例如主机模板和id。
15.nova conductor从消息队列中拿到请求查询数据库。
16.nova conductor查询nova数据库。
17.数据库返回虚机信息。
18.nova compute从消息队列中获取信息。
19.nova compute 请求glance 的rest api,下载所需要的镜像,一般是qcow2的。
20.glance api 也会去验证请求的token的有效性。
21.glance api 返回镜像信息给nova-compute。
22.同理,nova compute请求neutron api配置网络,例如获取虚机ip地址
23.验证token的有效性
24.neutron返回网络信息
25-27 同glance、neutron验证token返回块设备信息
28.根据上面配置的虚拟机信息,生成xml,写入libvirt,xml文件,然后调用libvirt driver去使用libvirt.xml文件启动虚拟机。
参考文章:
https://www.cnblogs.com/zhoumingang/p/5532409.html
https://blog.csdn.net/abcdocker/article/details/53378682
https://docs.openstack.org/nova/pike/install/get-started-compute.html
转载于:https://www.cnblogs.com/tongxiaoda/p/8777718.html
OpenStack之Nova模块相关推荐
- 传统公司部署OpenStack(t版)简易介绍(五)——nova模块部署
传统公司部署OpenStack(t版)简易介绍(五)--nova模块部署 一.nova组件部署位置 二.ct节点Nova服务配置 三.c1节点配置Nova服务(c2节点一样,只是配置文件的IP不同) ...
- Openstack 03 - Nova Compute
1.前言 很早之前就开始着手写Openstack 系列的博客了,在写了总体架构和Keystone之后,准备写Nova,但是每次写到一半,自己心里就觉得不踏实,因为似乎我并没有真正理解Nova,或者说根 ...
- 云计算服务模型和openstack架构常用模块介绍
云计算的服务模型 云计算有IaaS(Infrastructure as a Service,基础架构即服务),PaaS(Platform as a Service,平台即服务),SaaS(Softwa ...
- openstack 安装 Nova
openstack Q版 服务器系统centos7 控制端IP:192.168.50.31 计算端IP:192.168.50.32 Nova 下面所有操作全在控制端 # 登录 mysql -u roo ...
- OpenStack之Nova架构分析
在云平台的建设中,最重要的就是云平台资源的合理利用和部署的自动化,我们在搭建云平台的时候会虚拟出多个虚拟机来对外对内提供服务,但是如果将所有的服务器进行物理划分构建出来很多虚拟机让其一直开着会照成一些 ...
- OpenStack之Keystone模块
一.Keystone介绍 OpenStack Identity(Keystone)服务为运行OpenStack Compute上的OpenStack云提供了认证和管理用户.帐号和角色信息服务,并为Op ...
- OpenStack 之Nova添加扩展API流程,附带资源的查找功能
例子中涉及到SQLAlchemy 得相关操作,可以参考 上一随笔 Openstack 中规定,扩展openstack得api有两种方式 创建新的WSGI 资源 扩展原有得WSGI资源得控制器(我得理解 ...
- openstack九大模块
openstack的9个模块 1.dashboard(Horizon) 图形化UI接口 良好的用户界面 没有此模块,可以通过命令行实现 通过dashboard可以访问所有的子模块(项目),除了iden ...
- OpenStack之Nova(T版)
目录 一.概述 二.Nova系统架构 一.API 二.Scheduler 一.选择计算节点 二.调度器类型 三.过滤器 三.compute 四.conductor 五.PlacementAPl 六.c ...
- OpenStack 的Nova组件详解
Open Stack Compute Infrastructure (Nova) Nova是OpenStack云中的计算组织控制器.支持OpenStack云中实例(instances)生命周期的所有活 ...
最新文章
- C语言--第0次作业
- 三次元风景照秒变宫崎骏动画,还能把石原里美吉卜力化,AnimeGAN已开源
- MacBook Pro Homebrew 国内镜像加速
- LeetCode Reverse String(字符串反转)
- 代理加盟哪家小程序开发公司好
- python---tornado钩子预留解析
- linux 使用 touch 修改文件的修改时间
- centos安装ruby
- apache php mysql下载_linux+apache+php+mysql 安装
- koa --- [MVC实现之二]Controller层的实现
- Docker (1) 基本概念和安装
- 【开发工具】之linux下makefile编写
- Bugtags 测试平台(支持ios、android)
- 又把锅甩给中国!苹果和解给了300多亿,但高通业绩预测并不乐观
- IE6.0中getElementsByName和getElementById的bug
- 陈国荣 计算机科学,信息工程中计算机网络技术的应用-网络技术论文-计算机论文(10页)-原创力文档...
- Eclipse安装svn插件的几种方式
- 2020抖音无人直播技术:最新不封号无人直播的操作方法详细介绍
- 乐优商城遇到的坑(二):Day56 品牌管理之虚拟机CentOS6.5我真的不会装
- 大型网站技术架构-《大型网站技术架构:核心原理与案例分析》读书笔记
热门文章
- 数理化计算机电子 武大水平,全方位比较南开大学、武汉大学——以数据为基础.doc...
- 阿里面试官:HashMap 熟悉吧?好的,那就来聊聊 Redis 字典吧!
- MyEclipse插件不能安装原因
- Chelly的串串专题
- Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)
- Java中上转型对象数组
- estore商城案例(一)------用户注册邮件激活(上)
- 电脑突然出现成功连接网络但不能上网、网络受限(解决办法)
- 关于破解百度文库的方法(非常实用)
- zt mysql set enum类型介绍