1. 项目介绍​Nova是OpenStack中的计算组织控制器,用于为单个用户或使用群组管理虚拟机实例的整个生命周期, 负责管理所有的资源、网络、认证以及可扩展性。​OpenStack Compute 没有包含任何的虚拟化软件,相反它定义和运行在主机操作系统上的虚拟化机制(Hypervisors)交互的驱动程序(默认使用KVM),并通过基于Web的程序应用接口(API)来提供功能的使用。​
  2. 服务组件​Nova-api 对外提供一个与实例交互的接口,也是外部可用于管理实例的唯一组件,用来引发多数业务流程的活动(如运行一个实例)。API端点是一个基础的HTTP网页服务,通过使用多种API接口(Amazon,Rackspace和相关的模型)来提供认证,授权和基础命令和控制功能。​Nova compute 是一个非常重要的守护进程,负责创建和终止虚拟机实例,即管理着虚拟机实例的生命周期。它接受来自消息队列的动作然后执行一系列的系统操作,如启动一个KVM实例,并且更新数据库的状态。可以通过使用API的方式把命令分发到Compute控制器,进行以下的操作:​ 实例生命周期的管理:运行、结束、重启、销毁实例​ 卷的管理:通过卷控制器(nova-volume),管理基于LVM的实例卷​ 授权管理:提供认证和授权服务​ 对象存储:组件选择性提供存储服务​Nova-schedule :接受一个消息队列的虚拟实例请求,通过恰当的调度算法决定在哪台主机上运行这个请求,即从可用资源池中获得一个计算服务,起到调度器的作用。最简单的算法就是随机选择一个。​Nova-novncproxy NoVNC代理服务​Nova-consoleauth 虚拟机开机日志服务、VNC及日志安全认证服务​Nova-xvpvncproxy xvpvnc代理服务​ Nova-network(高版本已被neutron取代)接受来自消息队列的任务,对网络执行相应的操作。特定的任务有分配固定IP,为项目配置VLAN,为计算节点配置网络等​Nova-volume(高版本已被cinder取代) 用来管理基于LVM的实例卷,有新建卷,删除卷,为实例附加卷,为实例分离卷等相关功能。卷为实例提供一个持久化存储,由于根分区是非持久化的,当实例终止时对它所做的任何改变都会消失。当一个卷从实例分离或者实例终止时,这个卷保留着存储在其中的数据,把这个卷重新加载到相同实例或者附加到不同实例时,这些数据依然能够被访问。​Nova-conductor 介于nova-compute和database之间,避免compute直接访问数据库。​message queue:消息队列,使用AMQP(Advanced Message Queue Protocol)为各个模块之间的通信建立通道,起到一个集线器的作用,这里是RabbitMQ。Nova通过异步调用请求响应,在响应被接受的时候会触发回调。因为使用了异步通信,不会有用户长时间卡在等待状态,这个是非常有必要的,因为许多API调用预期的行为都很耗时,比如加载一个实例或者是上传一个镜像。​一个典型的消息传递事件从API服务器接受来自用户的请求开始。这个API服务器授权这个用户,保证用户是被允许发起相关的命令。在请求中所涉及到的对象的有效性被评估,如果评估有效,将传递给相关的工作处理器。这个请求首先会被发送到消息队列中。工作处理器在它们各自角色或者主机名的基础上监听这个队列。当监听到产生了工作请求,工作处理器接收这个任务并开始执行。完成之后,响应会分发到队列中。队列会被API服务器接收和转述到发起请求的用户。在整个过程中数据库实体会根据需求被查询,增加或者消除。​database:存储云基础设施构建时和运行时状态,包括可用的实例类型,正在使用的实例类型,可用的网络和项目。​
  3. 计算服务的