找回密码
 立即注册
首页 业界区 安全 OpenStack Nova 架构

OpenStack Nova 架构

坐褐 昨天 15:27
Nova 是 OpenStack 最核心的服务之一,负责虚拟机(VM)实例的全生命周期管理,包括创建、调度、运行、终止等操作。它是 OpenStack 实现计算即服务(IaaS)的核心组件,支持多种虚拟化技术和硬件平台。
1 架构图
  1. +----------------+    +----------------+    +----------------+
  2. |    客户端      |    |  Horizon Dashboard |  |  其他服务     |
  3. +-------+--------+    +-------+--------+    +-------+--------+
  4.         |                    |                    |
  5.         +--------------------+--------------------+
  6.                              |
  7.                              v
  8. +---------------------------------------------------------+
  9. |                    Nova API                             |
  10. +---------------------------------------------------------+
  11.         |               |               |               |
  12.         v               v               v               v
  13. +----------------+----------------+----------------+----------------+
  14. |  Nova Scheduler |  Nova Conductor| Consoleauth    |  Proxy         |
  15. |  (调度器)       |  (导体服务)    | (控制台认证)   | (控制台代理)   |
  16. +----------------+----------------+----------------+----------------+
  17.         |               |
  18.         |               v
  19.         |      +----------------+
  20.         |      |    数据库      |
  21.         |      +----------------+
  22.         |
  23.         v
  24. +----------------+       +----------------+       +----------------+
  25. | Nova Compute   |       | Nova Compute   |       | Nova Compute   |
  26. | (计算节点1)    |       | (计算节点2)    |       | (计算节点n)  |
  27. +----------------+       +----------------+       +----------------+
  28.         |                       |                       |
  29.         v                       v                       v
  30. +----------------+       +----------------+       +----------------+
  31. | Hypervisor     |       | Hypervisor     |       | Hypervisor     |
  32. | (KVM/Xen等)   |       | (KVM/Xen等)   |       | (KVM/Xen等)   |
  33. +----------------+       +----------------+       +----------------+
复制代码
2 组件

2.1 nova-api


  • 职责API 端点请求入口
  • 功能

    • 接收和处理所有外部的 RESTful API 请求(例如来自 Horizon  dashboard、CLI 工具、或其他服务的请求)。
    • 对用户请求进行初步验证和解析。
    • 将合法的请求转换为内部操作,并通过消息队列发送给其他相应的 Nova 服务。
    • 它是最繁忙的服务之一,通常需要部署多个实例以实现负载均衡。

2.2 nova-scheduler


  • 职责调度器,决定虚拟机在哪个计算节点上启动。
  • 功能

    • 从消息队列中接收创建虚拟机的请求。
    • 根据请求中的资源需求(如 CPU、内存、磁盘)和系统当前的资源状态,通过一系列过滤器(Filters)权重(Weighers) 算法,从所有可用的计算节点中筛选出最合适的一个。
    • 常见的过滤器:RamFilter(内存过滤),CoreFilter(CPU核心过滤),AvailabilityZoneFilter(可用域过滤)。
    • 常见的权重器:优先选择剩余资源最多的节点(RAMWeigher),或优先选择当前负载最低的节点。

2.3 nova-compute


  • 职责计算节点上的核心工作进程一个计算节点上运行一个 nova-compute 实例
  • 功能

    • 是真正与底层 Hypervisor(如 libvirt/KVM)交互、管理虚拟机生命周期的组件。
    • 接收来自消息队列的操作指令(如运行、终止、重启虚拟机)。
    • 通过 Hypervisor 的 API(如 libvirt)执行具体操作。
    • 定期向系统报告当前节点的资源使用情况和健康状态(Heartbeat)。

2.4 nova-conductor


  • 职责数据库代理协调者
  • 功能

    • 作为 nova-compute 服务和数据库之间的一个中间层,增强了安全性和可扩展性。
    • nova-compute 不再直接访问数据库,所有数据库操作都通过 nova-conductor 代理完成。这避免了计算节点被攻破后直接访问数据库的风险。
    • 处理一些需要协调的复杂操作,例如实时迁移。

2.5 nova-consoleauth


  • 职责控制台令牌认证
  • 功能:对用户通过 Horizon 或 nova-novncproxy 访问虚拟机控制台的请求进行身份验证和授权。
2.6 nova-novncproxy 和 nova-spicehtml5proxy


  • 职责控制台代理
  • 功能:提供基于 Web 的 VNC 或 SPICE 客户端,使用户可以通过浏览器访问虚拟机的图形化控制台。它作为用户和虚拟机 VNC/SPICE 服务之间的代理。
2.7 数据库(SQL Database)


  • 职责中央信息存储
  • 功能:存储 Nova 的几乎所有状态信息,包括实例的状态、可用资源、网络信息、项目(Project)配额等。常用的数据库是 MySQL/MariaDB 或 PostgreSQL。
2.8 消息队列(Message Queue, MQ)


  • 职责服务间通信的中央枢纽
  • 功能:所有 Nova 服务都通过它进行异步的、解耦的通信。最常用的是 RabbitMQ。
3、Nova 组件间通信机制

Nova 各组件间主要通过两种方式协作:
3.1 基于消息队列 (MQ) 的 RPC 调用

nova-api -> nova-scheduler,nova-scheduler -> nova-compute)。这是一种异步通信模式,能有效解耦组件,提升系统整体的吞吐能力和可扩展性。主要分为:

  • rpc.call:请求/响应模式,调用者会等待响应(同步)。
  • rpc.cast:单向通知模式,调用者不等待响应(异步)。
3.2 RESTful API 调用

主要用于 Nova 与其他 OpenStack 服务(如 Keystone、Glance、Neutron、Cinder)的交互。
4、部署架构

在实际部署中,Nova 组件通常分布在两种类型的节点上:
节点类型通常运行的 Nova 组件备注控制节点nova-api, nova-scheduler, nova-conductor, Placement API, Message Queue, Database负责管理、调度和数据库操作。计算节点nova-compute负责运行虚拟机实例。每个计算节点上都会运行一个 nova-compute 服务,管理本节点的 Hypervisor。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册