【Centos7系列】Openstack-Nova组件介绍

Iceboundnana 发布于 2023-08-08 1.24k 次阅读


概述

  • 计算服务,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 请求做以下处理:
    1. 检查客户端传入的参数是否合法有效
    2. 调用nova其他服务来处理客户端 HTTP 请求
    3. 格式化nova其他子服务返回结果并返回给客户端
    4. Nova-api 是外部访问并使用nova提供的各种服务的唯一途径,也是客户端和nova之间的中间层

2、Scheduler

  • 调度器,由nova-scheduler服务实现,主要功能:选择在哪个计算节点上启动实例
    • 可以应用多种规则,若考虑内存用率、cpu负载率、cpu构架(intel / amd)等多种因素,根据一定的算法,确定虚拟机实例能够运行在哪一个计算节点上
  • Nova-scheduler 服务会从队列中接收一个虚拟机实例的请求,通过读取数据库的内容,从可用资源池中选择最合适的计算节点来创建的虚拟机实例
  • Nova 调度器类型
    • 随机调度器(chance scheduler):从所有正常运行 nova-compute 服务节点中随机选择
    • 过滤器调度器(filter scheduler):根据指定的过滤条件以及权重选择最佳的计算节
    • Filter 又称为筛选器
    • 缓存调度器(caching scheduler):可看作随机调度器的一种特殊类型,在随机调度的基础上将主机资源信息缓存在本地内存中,通过后台的定时任务定时从数据库中获取最新的主机资源信息
  • 调度器调度过程
    1. 通过指定的过滤器选择满足条件的计算节点,比如内存使用率小于50%,可使用多个过滤器依次进行过滤
    2. 对过滤之后的主机列表进行权重计算并排序,选择最优的计算节点来创建虚拟机实例

3、Compute

  • Nova-compute 在计算节点上运行,负责管理节点上的实例
  • 通常一个主机运行一个 Nova-compute 服务,实例部署在哪个可用的主机上取决于调度算法
  • OpenStack对实例的操作,最后都是提交给 Nova-compute 来完成
  • 主要功能:
    • 负责执行具体的与实例生命周期或管理实例相关的工作
    • 报告节点状态(写入数据库,保证 scheduler 读取数据库,数据库信息的实时性、celimetor,监控和管理 OpenStack 实例资源并汇入给用户 / OpenStack / 运维人员)
  • 工作过程:
    1. 定期向 OpenStack 报告计算节点的状态
    • 每隔一段时间,nova-compute 就会报告当前计算节点的资源使用情况和 nova-compute 服务状态
    • nova-compute 是通过 Hypervisor 的驱动获取这些信息的
    1. 实现虚拟机实例生命周期的管理
    • 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 数据库,返回结果并响应给客户端

常用操作

  • 生命周期和虚拟机管理
  • 云主机类型和安全组管理
此作者没有提供个人介绍。
最后更新于 2023-08-08