OpenStack 生态全景:核心组件系统性梳理
OpenStack 生态全景:核心组件系统性梳理
什么是 OpenStack
OpenStack 是一套开源的云计算基础设施软件,提供 IaaS(基础设施即服务)能力。它不是一个单体应用,而是由一组松耦合的服务组件构成,每个组件负责一个特定的资源域,通过 REST API 和消息队列协作。
核心理念:一切皆资源,一切皆 API。
组件全景图
1 | |
核心组件一览表
| 组件 | 代号 | 职责 | 核心进程 |
|---|---|---|---|
| Keystone | 认证服务 | 身份认证、授权、服务目录 | keystone-api |
| Nova | 计算服务 | 虚拟机生命周期管理 | nova-api, nova-compute, nova-conductor, nova-scheduler |
| Neutron | 网络服务 | SDN 网络、子网、路由、安全组 | neutron-server, neutron-agent |
| Cinder | 块存储服务 | 云硬盘创建、挂载、快照 | cinder-api, cinder-volume, cinder-scheduler |
| Glance | 镜像服务 | 虚拟机镜像存储与分发 | glance-api |
| Swift | 对象存储 | 海量非结构化数据存储 | swift-proxy, swift-object |
| Placement | 资源追踪 | 计算资源库存与分配追踪 | placement-api |
| Heat | 编排服务 | 基础设施模板化编排 | heat-api, heat-engine |
| Ceilometer | 监控服务 | 指标采集与计量 | ceilometer-agent |
| Ironic | 裸金属服务 | 物理机纳管与部署 | ironic-api, ironic-conductor |
| Horizon | 控制台 | Web 管理界面 | Django WSGI |
组件间通信模式
OpenStack 组件间有两种主要通信方式:
1. REST API(同步)
- 跨组件调用,如 Nova 调用 Neutron 创建网络端口
- 通过 Keystone Token 鉴权
- 使用
keystoneauth1库封装
2. RPC over AMQP(异步)
- 同一组件内部进程间通信,如 nova-api → nova-conductor → nova-compute
- 基于
oslo.messaging库 - 默认使用 RabbitMQ 作为消息中间件
- 支持
call(同步等待响应)和cast(异步不等待)
1 | |
一次创建虚拟机的完整调用链
1 | |
数据库架构
每个组件维护自己独立的数据库(通常是 MySQL/MariaDB):
| 组件 | 数据库名 | 核心表 |
|---|---|---|
| Keystone | keystone | user, project, role, token |
| Nova | nova, nova_api, nova_cell0 | instances, block_device_mapping, migrations |
| Neutron | neutron | networks, subnets, ports, routers |
| Cinder | cinder | volumes, snapshots, backups |
| Glance | glance | images, image_properties |
| Placement | placement | resource_providers, inventories, allocations |
Nova 从 Queens 版本开始引入 Cell v2 架构,数据库拆分为 nova_api(全局)和 nova_cellX(每个 Cell 独立)。
版本演进关键节点
| 版本 | 时间 | 重要变化 |
|---|---|---|
| Kilo | 2015 | Nova 引入 Cells v1 |
| Newton | 2016 | Neutron DVR 成熟 |
| Ocata | 2017 | Placement API 从 Nova 独立 |
| Queens | 2018 | Nova Cells v2 正式落地 |
| Rocky | 2018 | Nova 支持 live migration with NUMA |
| Train | 2019 | Ironic 支持 BIOS 配置 |
| Yoga | 2022 | 全面支持 Python 3.9+ |
| Caracal | 2024 | 当前最新稳定版 |
学习路径建议
- 先 Keystone — 理解认证体系,所有组件都依赖它
- 再 Nova — 最核心,理解虚拟机完整生命周期
- 然后 Neutron — 网络是最复杂的部分,SDN 概念多
- 接着 Cinder + Glance — 存储体系
- 最后 Placement + Heat — 资源调度与编排
后续每篇文章将深入解析每个组件的架构、源码关键路径和二次开发要点。