锄淫鲷 发表于 2025-9-12 15:27:25

OpenStack Nova 架构

Nova 是 OpenStack 最核心的服务之一,负责虚拟机(VM)实例的全生命周期管理,包括创建、调度、运行、终止等操作。它是 OpenStack 实现计算即服务(IaaS)的核心组件,支持多种虚拟化技术和硬件平台。
1 架构图

+----------------+    +----------------+    +----------------+
|    客户端      |    |Horizon Dashboard ||其他服务   |
+-------+--------+    +-------+--------+    +-------+--------+
      |                  |                  |
      +--------------------+--------------------+
                           |
                           v
+---------------------------------------------------------+
|                  Nova API                           |
+---------------------------------------------------------+
      |               |               |               |
      v               v               v               v
+----------------+----------------+----------------+----------------+
|Nova Scheduler |Nova Conductor| Consoleauth    |Proxy         |
|(调度器)       |(导体服务)    | (控制台认证)   | (控制台代理)   |
+----------------+----------------+----------------+----------------+
      |               |
      |               v
      |      +----------------+
      |      |    数据库      |
      |      +----------------+
      |
      v
+----------------+       +----------------+       +----------------+
| Nova Compute   |       | Nova Compute   |       | Nova Compute   |
| (计算节点1)    |       | (计算节点2)    |       | (计算节点n)|
+----------------+       +----------------+       +----------------+
      |                     |                     |
      v                     v                     v
+----------------+       +----------------+       +----------------+
| Hypervisor   |       | Hypervisor   |       | Hypervisor   |
| (KVM/Xen等)   |       | (KVM/Xen等)   |       | (KVM/Xen等)   |
+----------------+       +----------------+       +----------------+2 组件

2.1 nova-api


[*]职责:API 端点和请求入口。
[*]功能:

[*]接收和处理所有外部的 RESTful API 请求(例如来自 Horizondashboard、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。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

艾曼语 发表于 4 天前

感谢分享,学习下。
页: [1]
查看完整版本: OpenStack Nova 架构