概述
- 计算服务,openstack最核心的服务之一,负责维护和管理云环境的计算资源
- Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的 Hypervisor(虚拟机管理器)进行交互
- 所有的计算实例(虚拟服务器)由 Nova 进行生命周期的调度管理(启动、挂起、停止、删除等)
- Nova需要keystone、glance、neutron、cinder和swift等其他服务的支持,能与这些服务集成,实现如加密磁盘、裸金属计算实例等

架构

DB:数据存储的 SQL 数据库API:接收HTTP请求、转换命令、通过消息队列或HTTP与其他组件通信Scheduler:用于决定哪台计算节点承载计算实例的nova调度器Network:管理IP转发、网桥或虚拟局域网的nova网络组件Compute:管理虚拟机管理器与虚拟机支架你通信的nova计算组件Conductor:处理需要协调(构建虚拟机或调整虚拟机大小)的请求,或处理对象转换
组件介绍
1、API
- API 是客户访问 nova 的 http 接口,由 nova-api 服务实现,nova-api 服务接收和响应来自最终用户的计算api请求。作为 OpenStack 对外服务的最主要接口,nova-api 提供了一个集中的可以查询所有 api 的端点
- 所有对 nova 的请求都首先由 nova-api 处理
- API提供REST标准调用服务,便于与第三方系统集成
- 最终用户不会直接改送 RESTful API 请求,而是通过命令行、dashbord 和其他需要跟 nova 交换的组件来使用这些API
- 只要跟虚拟机生命周期相关的操作,nova-api 都可以响应
- Nova-api 对接收到的 HTTP API 请求做以下处理:
- 检查客户端传入的参数是否合法有效
- 调用nova其他服务来处理客户端 HTTP 请求
- 格式化nova其他子服务返回结果并返回给客户端
- Nova-api 是外部访问并使用nova提供的各种服务的唯一途径,也是客户端和nova之间的中间层
2、Scheduler
- 调度器,由nova-scheduler服务实现,主要功能:选择在哪个计算节点上启动实例
- 可以应用多种规则,若考虑内存用率、cpu负载率、cpu构架(intel / amd)等多种因素,根据一定的算法,确定虚拟机实例能够运行在哪一个计算节点上
- Nova-scheduler 服务会从队列中接收一个虚拟机实例的请求,通过读取数据库的内容,从可用资源池中选择最合适的计算节点来创建的虚拟机实例
- Nova 调度器类型
- 随机调度器(chance scheduler):从所有正常运行 nova-compute 服务节点中随机选择
- 过滤器调度器(filter scheduler):根据指定的过滤条件以及权重选择最佳的计算节
- Filter 又称为筛选器
- 缓存调度器(caching scheduler):可看作随机调度器的一种特殊类型,在随机调度的基础上将主机资源信息缓存在本地内存中,通过后台的定时任务定时从数据库中获取最新的主机资源信息
- 调度器调度过程
- 通过指定的过滤器选择满足条件的计算节点,比如内存使用率小于50%,可使用多个过滤器依次进行过滤
- 对过滤之后的主机列表进行权重计算并排序,选择最优的计算节点来创建虚拟机实例
3、Compute
- Nova-compute 在计算节点上运行,负责管理节点上的实例
- 通常一个主机运行一个 Nova-compute 服务,实例部署在哪个可用的主机上取决于调度算法
- OpenStack对实例的操作,最后都是提交给 Nova-compute 来完成
- 主要功能:
- 负责执行具体的与实例生命周期或管理实例相关的工作
- 报告节点状态(写入数据库,保证 scheduler 读取数据库,数据库信息的实时性、celimetor,监控和管理 OpenStack 实例资源并汇入给用户 / OpenStack / 运维人员)
- 工作过程:
- 定期向 OpenStack 报告计算节点的状态
- 每隔一段时间,nova-compute 就会报告当前计算节点的资源使用情况和
nova-compute服务状态 - nova-compute 是通过 Hypervisor 的驱动获取这些信息的
- 实现虚拟机实例生命周期的管理
- OpenStack 对虚拟机实例最主要的操作都是通过 nova-compute 实现的
- 创建、关闭、重启、挂起、恢复、中止、调整大小、迁移、快照
4、Conductor
- 由 nova-conductor 模块实现,为数据库的访问提供一层安全保障
- Nova-conductor 作为 nova-compute 服务与数据库之间交互的中介,避免了直接访问由 nova-compute服务创建对接数据库
- Nova-compute 访问数据库的全部操作都改到 nova-conductor 中,nova-conductor作为对数据库操作的一个代理,且 nova-conductor 是部署在控制节点上的
- Nova-conductor 有助于提高数据库的访问性能,nova-compute可以创建多个线程使用远程过程调用(RPC)访问 nova-conductor
- 在一个大规模的 OpenStack 部署环境里,管理员可通过增加 nova-conductor 的数量来应付日益增长的计算节点对数据库的访问量
5、Placement API
- 以前对资源的管理全部由计算节点承担,在统计资源使用情况时,只是简单的将所有计算节点的资源情况累加起来,但是系统中还存在外部资源,这些资源由外部系统提供。如ceph、nfs等提供的存储资源等。面对多种多样的资源提供者,管理员需要统一的、简单的管理接口来统计系统中资源使用情况,这个接口就是Placement API
- Placement APl 由 nova-placement-api 服务来实现,追踪记录资源提供者的目录和资源使用情况
- 被消费的资源类型是按类进行跟踪的,如:计算节点类、共享存储池类、IP地址类等
单 cell 架构

创建虚拟机流程
1、Nova-api 接收、响应请求
2、交给 conductor 处理 / 协调
conductor > scheduler 调度器 > 最适合创建虚拟机的节点
3、若 scheduler 调度失败
将调度失败的信息,存放在 cell0 中
nova-api 会读取 cell0 数据库,获取到失败的信息及原因,返回给客户端
4、若 scheduler 调度成功
conductor 就会将这个任务交给 cell1 处理(rabbitmq-cell 接收、响应)
rabbitmq-cell > conductor-cell > 交给节点上的 compute 进行具体创建 > compute汇报给cell1数据库 > 响应给 conductor-cell > rabbitmq-cell > nova 的 conductor
5、nova-conductor接收到cell的返回之后,保存在api数据库中(保存实例创建成功的信息)
6、nova-api 组件,会读取 api 数据库,返回结果并响应给客户端
常用操作
- 生命周期和虚拟机管理

- 云主机类型和安全组管理


Comments NOTHING