简介
1. Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。
OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的。计算资源只是内存跟cpu。
2. Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor(虚拟机管理器)进行交互。
所有的计算实例(虚拟服务器)由Nova进行生命周期的调度管理(启动、挂起、停止、删除等)
3. Nova需要keystone、glance、neutron、cinder和swift等其他服务的支持,能与这些服务集成,实现如加密磁盘、裸金属计算实例等。
一、nova主要组件
1、nova-api
nova-api服务作为Nova组件对外的唯一窗口,接收和响应用户的API请求,当客户需要执行虚机相关的操作,能且只能向nova-api发送REST API请求,这里的客户包括终端用户、命令行和openstack其他组件。
nova-api服务支持OpenStack Compute API,Amazon EC2 API,还有一个Admin API用于用户进行一些管理操作。
2、nova-api-metadata
nova-api-metadata主要接收虚拟机的元数据请求,通常在带有nova-network的多主机模式下才会使用。
3、nova-compute
nova-compute在计算节点上运行,它是一个工作进程(worker deamon),通过hypervisor APIs来创建或者关闭虚拟机实例,这个过程相当的复杂,总的来说,它从队列服务接收消息之后,然后启动虚拟机并在数据库中更新状态。
nova-compute的功能可以分为两类,一定时向OpenStack报告计算节点的状态,二实现instance生命周期的管理。
4、nova-placement-api
主要追踪每个提供者的库存和使用量情况,比如追踪计算节点的资源,存储池的使用情况以及IP的分配情况等等。
5、nova-scheduler
如果有多个实体都能够完成任务,那么通常会有一个scheduler负责从这些实体中挑选出一个最合适的来执行操作,nova-scheduler就是处理队列中的请求,然后会根据计算节点当时的资源使用情况选择一个最合适的计算节点来运行虚机,会通过消息中间件rabbitMQ向选定的计算节点发出launch instance的命令。
调度服务就好比是一个开发团队中的项目经理,当接到新的开发任务时,项目经理会评估任务的难度,考察团队成员目前的工作负荷和技能水平,然后将任务分配给最合适的开发人员。
6、nova-conductor
nova-compute需要获取和更新数据库中instance的信息,但nova-compute并不会直接访问数据库,而是通过nova-conductor实现数据的访问。在巨大的集群中,nova-conductor可以水平扩展,但是不要部署在计算节点上。
如此设计的好处是让集群更高的系统安全性和更好的系统伸缩性。
7、nova-cert
一个Nova的证书服务,提供 x509 证书支持,用于兼容AWS。
8、nova-consoleauth
负责对访问虚机控制台请亲提供Token认证。
9、nova-novncproxy
提供基于Web浏览器的VNC访问。
10、nova-spicehtml5proxy
提供基于HTML5浏览器的SPICE访问。
11、nova-xvpvncproxy
提供基于Java客户端的VNC访问。
12、The queue
在前面我们了解到Nova包含众多的子服务,这些子服务之间需要相互协调和通信,为解耦各个子服务,Nova通过Message Queue作为子服务的信息中转站,所以在架构图上我们看到了子服务之间没有直接的连线,它们都通过Message Queue联系。
13、SQL database
Nova会存放一些云平台的状态数据在数据库中,比如可用虚拟机类型、虚拟机是否使用中、网络的使用状态以及项目等