Nova(一):架构
Compute Service:Nova 是 OpenStack 最核心的服务,负责维护和管理云环境的计算资源。OpenStack 作为 IaaS 的云操作系统,虚拟机生命周期管理也就是通过 Nova 来实现的。
Nova架构图
#版本变化了,组件可能也发生了改变

OpenStack N版 Nova组件可以分为5大类:API、Compute Core、Console Interface、Database、Message Queue ================================================================================== API:nova-api nova-api 接收和响应客户的 API 调用。 除了提供 OpenStack 自己的API,nova-api 还支持 Amazon EC2 API。 也就是说,如果客户以前使用 Amazon EC2,并且用 EC2 的 API 开发了些工具来管理虚机,那么如果现在要换成 OpenStack,这些工具可以无缝迁移到 OpenStack,因为 nova-api 兼容 EC2 API,无需做任何修改。 -------------------------------------------------- Compute Core:nova-scheduler、nova-compute、Hypervisor、nova-conductor nova-scheduler 虚机调度服务,负责决定在哪个计算节点上运行虚机 nova-compute 管理虚机的核心服务,通过调用 Hypervisor API 实现虚机生命周期管理 Hypervisor 计算节点上跑的虚拟化管理程序,虚机管理最底层的程序。 不同虚拟化技术提供自己的 Hypervisor。 常用的 Hypervisor 有 KVM,Xen, VMWare 等 nova-conductor nova-compute 经常需要更新数据库,比如更新虚机的状态。 出于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor -------------------------------------------------- Console Interface:nova-console、nova-consoleauth、nova-cert nova-console 用户可以通过多种方式访问虚机的控制台: nova-novncproxy,基于 Web 浏览器的 VNC 访问 nova-spicehtml5proxy,基于 HTML5 浏览器的 SPICE 访问 nova-xvpnvncproxy,基于 Java 客户端的 VNC 访问 nova-consoleauth 负责对访问虚机控制台请求提供 Token 认证 nova-cert 提供 x509 证书支持 -------------------------------------------------- Database:nova数据库 Nova 会有一些数据需要存放到数据库中,一般使用 MySQL。数据库安装在控制节点上。 Nova 使用命名为 “nova” 的数据库。 -------------------------------------------------- Message Queue:默认为RabbitMQ Nova 包含众多的子服务,子服务之间需要相互协调和通信。为解耦各个子服务,Nova 通过 Message Queue 作为子服务的信息中转站。 OpenStack 默认是用 RabbitMQ 作为 Message Queue。

关于上面的所有组件,只有Hypervisor、nova-compute????是放在计算节点上的;其他的都是放在控制节点上的 [root@controller ~]# ps -ef |grep nova nova 14091 1 0 09:17 ? 00:00:12 /usr/bin/python2 /usr/bin/nova-novncproxy --web /usr/share/novnc/ nova 15605 15561 0 09:18 ? 00:00:30 nova_api_wsgi -DFOREGROUND nova 15606 15561 0 09:18 ? 00:00:10 nova_api_wsgi -DFOREGROUND nova 15617 15561 0 09:18 ? 00:00:11 nova_api_wsgi -DFOREGROUND nova 15620 15561 0 09:18 ? 00:00:19 nova_api_wsgi -DFOREGROUND nova 15621 15561 0 09:18 ? 00:00:01 nova_metadata_w -DFOREGROUND nova 15622 15561 0 09:18 ? 00:00:01 nova_metadata_w -DFOREGROUND nova 15623 15561 0 09:18 ? 00:00:02 nova_metadata_w -DFOREGROUND nova 15630 15561 0 09:18 ? 00:00:02 nova_metadata_w -DFOREGROUND nova 21713 1 1 09:22 ? 00:05:19 /usr/bin/python2 /usr/bin/nova-conductor nova 21798 21713 1 09:23 ? 00:06:22 /usr/bin/python2 /usr/bin/nova-conductor nova 21799 21713 1 09:23 ? 00:06:22 /usr/bin/python2 /usr/bin/nova-conductor nova 21800 21713 1 09:23 ? 00:06:24 /usr/bin/python2 /usr/bin/nova-conductor nova 21801 21713 1 09:23 ? 00:06:23 /usr/bin/python2 /usr/bin/nova-conductor nova 21886 1 1 09:23 ? 00:05:26 /usr/bin/python2 /usr/bin/nova-scheduler nova 22120 21886 0 09:23 ? 00:00:25 /usr/bin/python2 /usr/bin/nova-scheduler nova 22121 21886 0 09:23 ? 00:00:26 /usr/bin/python2 /usr/bin/nova-scheduler root 115399 33427 0 16:40 pts/1 00:00:00 grep --color=auto nova [root@controller ~]# ps -e |grep nova #版本变化了,组件可能也发生了改变 14091 ? 00:00:12 nova-novncproxy 21713 ? 00:05:22 nova-conductor 21798 ? 00:06:26 nova-conductor 21799 ? 00:06:26 nova-conductor 21800 ? 00:06:28 nova-conductor 21801 ? 00:06:27 nova-conductor 21886 ? 00:05:29 nova-scheduler 22120 ? 00:00:25 nova-scheduler 22121 ? 00:00:26 nova-scheduler [root@yefeng ~]# ps -ef |grep nova nova 45444 1 1 09:34 ? 00:05:56 /usr/bin/python2 /usr/bin/nova-compute #计算节点只运行了nova-compute

创建VM,nova子服务协同工作过程(仅文字描述): 1.API(nova-api)接收到创建vm请求(白屏请求or API请求) 2.API(nova-api)做一些必要处理后,将请求转到RabbitMQ中 3.nova-scheduler从RabbitMQ获取到信息,执行调度算法,从计算节点中选出节点A 4.nova-scheduler向RabbitMQ发送请求:“在节点A创建VM” 5.nova-compute从RabbitMQ获取到信息,然后在本节点的Hypervisor启动VM 6.在创建VM过程中,nova-compute如果需要查询or更新数据库,会通过RabbitMQ向nova-conductor发送信息;nova-conductor负责数据库的访问 以上是创建虚机最核心的步骤,当然省略了很多细节 也就是说,创建VM的过程,除了Console Interface:nova-console、nova-consoleauth、nova-cert,其他的全部组件都参与了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!