Nova简介
- 计算服务是openstack最核心的服务之一, 负责维护和管理云环境的计算资源(实例生命周期),它在openstack项目中代号是nova
- Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor (虚拟机管理器)进行交互。所有的计算实例(虚拟服务器)由Nova进行生命周期的调度管理(启动、挂起、停止、删除等)
- Nova需要keystone、glance、 neutron、 cinder和swift等其他服务的支持, 能与这些服务集成,实现如加密磁盘、裸金属计算实例等(也是nova的一大特性)
Nova系统架构
架构组成 特性
DB 用于数据存储的sql数据库
API 用于接收HTTP请求、转换命令、通过消息队列(相对于nova组件本身对内)或HTTP(对外)与其他组件通信的nova组件。
Scheduler 用于决定哪台计算节点承载计算实例的nova调度器
Network 管理IP转发、网桥或虚拟局域网的nova网络组件
Compute 管理虚拟机管理器与虚拟机之间通信的nova计算组件
Conductor 处理需要协调(构建虚拟机或调整虚拟机大小)的请求,或者处理对象转换
Nova组件
Nova–API
Nova–Scheduler调度器
调度器的类型
- 随机调度器(chance scheduler) :从所有正常运行nova-compute服务的节点中随机选择。
- 过滤器调度器(filter scheduler) :根据指定的过滤条件以及权重选择最佳的计算节点。Filter又称为筛选器
- 缓存调度器(caching scheduler):可看作随机调度器的中特殊类型,在随机调度的基础上将主机资源信息缓存在本地内存中,然后通过后台的定时任务定时从数据库中获取最新的主机资源信息。
工作流程:
- scheduler接收到任务的时候
- 先通过DB数据库中查询后端计算节点的资源信息,通过指定/未指定选择计算节点
- 若已指定host,直接发请求至制定compute node
- 若未指定host,需要通过DB数据库(数据库的信息可以和后端资源信息可以接近实时同步)获取后端资源信息,需要经过过滤和权重的计算打分,确定最适合创建实例的节点
调度器调度过程
- 通过指定的过滤器选择满足条件的计算节点,比如内存使用率小于50%,可以使用多个过滤器依次进行过滤。
- 对过滤之后的主机列表进行权重计算并排序,选择最他的计算节点来创建虚拟机实例。
Compute
主要功能
- Nova-compute在计算节点上运行,负责管理节点上的实例。通常一个主机运行一个Nova-compute服务,一个实例部署在哪个可用的主机上取决于调度算法。OpenStack对实例的操作,最后都是提交给Nova-compute来完成。
- Nova-compute可分为两类,一类是定向openstack报告计算节点的状态,另一类是实现实例生命周期的管理。
工作过程
Conductor
- 由nova-conductor模块实现,旨在为数据库的访问提供一层安全保障。Nova-conductor作为nova-compute服务与数据库之间交互的中介,避免了直接访问由nova-compute服务创建对接数据库。
- Nova-compute访问数据库的全部操作都改到novaconductor中,nova-conductor作为对数据库操作的一个代理,而且nova-conductor是部署在控制节点上的。
- Nova-conductor有助于提高数据库的访问性能,nova-compute可以创建多个线程使用远程过程调用(RPC)访问nova-conductor。
- 在一个大规模的open