OpenStack 的基本结构可以分为几个核心组件,每个组件都有明确的功能定位,并且通过标准化的 API 进行通信。它本质上是一个“分布式云计算平台”,组件之间通过消息队列和数据库进行协调,配合 REST API 对外提供管理接口。
OpenStack 基本结构与组件说明
控制平面与数据平面
在逻辑架构上,OpenStack 主要分为:
-
控制平面(Control Plane)
管理云平台的所有资源与调度,包括虚拟机、网络、存储等。所有核心服务都运行在控制节点。 -
数据平面(Data Plane)
实际承载计算任务和存储数据的物理/虚拟资源,包括计算节点、存储节点等。
核心组件
1. Keystone(身份认证服务)
-
功能:负责用户认证(Authentication)、授权(Authorization)和服务目录(Service Catalog)。
-
运行方式:独立服务进程(通常是 WSGI 应用),监听 HTTP API 请求。
-
通信方式:
-
组件调用 Keystone 的 REST API 获取 Token。
-
其他组件在接收到 API 请求时,通过 Keystone 验证 Token 合法性。
-
数据存储通常在 MySQL/MariaDB,缓存可用 Memcached/Redis。
-
2. Glance(镜像服务)
-
功能:提供虚拟机镜像的存储、查询与分发。
-
运行方式:
-
API 服务:响应镜像管理的 HTTP 请求。
-
Registry 服务(可选,已逐渐废弃):存储镜像元数据。
-
-
通信方式:
-
与 Swift(对象存储)或 Ceph RBD 等后端通信存放镜像数据。
-
与 Nova 通信,在创建虚拟机时提供镜像。
-
数据存储元信息在数据库,镜像文件通过 HTTP、RBD、NFS 等方式传输。
-
3. Nova(计算服务)
-
功能:管理计算资源(虚拟机、宿主机)。
-
子组件:
-
nova-api
:对外提供 REST API。 -
nova-scheduler
:调度虚拟机到合适的计算节点。 -
nova-compute
:运行在计算节点上,调用虚拟化后端(KVM、QEMU、VMware 等)创建/销毁虚拟机。 -
nova-conductor
:协调 compute 节点与数据库的访问(防止 compute 直接访问 DB)。
-
-
通信方式:
-
组件间通过 RabbitMQ/ZeroMQ/Kafka 消息队列通信。
-
与 Keystone 验证用户,与 Glance 获取镜像,与 Neutron 分配网络,与 Cinder 分配存储。
-
4. Neutron(网络服务)
-
功能:为虚拟机提供网络连接与网络资源管理(包括 VLAN/VXLAN、路由、NAT、安全组等)。
-
子组件:
-
neutron-server
:核心 API 服务。 -
插件与代理(如 L3 agent、DHCP agent、Open vSwitch agent)。
-
-
运行方式:API 服务+各节点上的网络代理。
-
通信方式:
-
通过 RPC 与 Nova、其他 Neutron agent 通信。
-
与 OVS/OVN 或 Linux Bridge 交互配置网络。
-
数据存储在数据库。
-
5. Cinder(块存储服务)
-
功能:提供持久化块存储卷(类似云硬盘)。
-
运行方式:
-
API 服务:响应卷的创建、挂载、删除等请求。
-
Volume 服务:与存储后端(LVM、Ceph RBD、FC SAN 等)交互。
-
-
通信方式:
-
通过 REST API 接收 Nova 或用户请求。
-
后端通过驱动调用存储系统 API。
-
元数据存数据库,数据存储在存储系统。
-
6. Swift(对象存储服务,可选)
-
功能:存储和获取非结构化数据(镜像、备份、日志等)。
-
运行方式:多进程 HTTP 服务,支持水平扩展。
-
通信方式:
-
API 调用(RESTful HTTP)。
-
数据分片存储,元数据存储在容器数据库。
-
7. Horizon(Web 控制台)
-
功能:基于 Django 的 Web 管理界面,调用各服务 API。
-
运行方式:WSGI Web 应用。
-
通信方式:
- 调用 Keystone 认证获取 Token,再调用其他服务的 REST API。
OpenStack 的通信方式总结
-
对外 API 调用
-
所有服务都通过 REST API 提供功能,HTTP(S) 协议。
-
API 通常运行在控制节点,经过 Keystone 认证。
-
-
组件间通信
-
消息队列(RabbitMQ/ZeroMQ/Kafka):Nova、Neutron、Cinder 等的异步消息传递。
-
数据库(MySQL/MariaDB/PostgreSQL):存储元数据。
-
-
数据传输
-
镜像分发:HTTP、RBD、NFS。
-
块存储:iSCSI、RBD、FC。
-
网络:VXLAN、GRE、VLAN。
-
OpenStack 组件部署位置与内部功能区分
管理端(控制节点)
主要运行 API、调度、认证、数据库、消息队列等控制服务,不直接运行虚拟机或存储数据。
通常高可用部署为 多控制节点(HA)。
组件 | 角色 | 说明 |
---|---|---|
Keystone | 身份认证 | 用户认证、授权、服务目录,全在管理端。 |
Glance | 镜像管理 | 镜像 API 服务和元数据存储在管理端,镜像文件可放对象存储(Swift/Ceph)。 |
Nova API / Scheduler / Conductor | 计算管理 | 所有 API、调度器、数据库访问协调器都在管理端。 |
Neutron Server | 网络 API | 核心 API 服务和调度逻辑在管理端。 |
Cinder API / Scheduler | 块存储管理 | 提供 API 和卷调度功能的服务在管理端。 |
Horizon | Web 控制台 | Web 界面在管理端部署。 |
数据库(MySQL/MariaDB) | 元数据存储 | 所有组件的元数据集中在管理端数据库。 |
消息队列(RabbitMQ/ZeroMQ/Kafka) | 组件通信 | 所有节点与管理端的消息交互中心。 |
节点端(计算节点、存储节点、网络节点)
计算节点(Compute Node)
主要负责运行虚拟机实例,直接与虚拟化后端(KVM、QEMU 等)交互。
组件 | 角色 | 说明 |
---|---|---|
nova-compute | 计算执行 | 调用虚拟化驱动(libvirt/KVM)创建、销毁虚拟机。 |
Neutron Agent(如 OVS Agent) | 网络配置 | 负责虚拟机网络接口配置、VXLAN/VLAN 隧道建立。 |
网络节点(Network Node)
专门负责三层路由、NAT、防火墙、安全组等功能(可与计算节点合并部署)。
组件 | 角色 | 说明 |
---|---|---|
L3 Agent | 三层路由 | 管理虚拟路由器、SNAT/DNAT。 |
DHCP Agent | DHCP 服务 | 给虚拟机分配 IP。 |
Metadata Agent | 元数据代理 | 虚拟机启动时提供配置信息(cloud-init)。 |
存储节点(Storage Node)
存放持久化数据,包括块存储和对象存储。
组件 | 角色 | 说明 |
---|---|---|
Cinder Volume | 块存储执行 | 负责与存储后端(LVM、Ceph RBD、FC)交互,创建/挂载/删除卷。 |
Swift Account / Container / Object | 对象存储 | Swift 的多进程服务,管理对象数据。 |
Ceph OSD / MON / MDS | 分布式存储 | 提供 RBD、CephFS、对象存储等功能。 |
总结部署关系(简化版)
控制节点(管理端)
├─ Keystone
├─ Glance
├─ Nova API / Scheduler / Conductor
├─ Neutron Server
├─ Cinder API / Scheduler
├─ Horizon
├─ 数据库
└─ 消息队列
计算节点
├─ nova-compute
├─ Neutron Agent (OVS/OVN)
网络节点
├─ L3 Agent
├─ DHCP Agent
├─ Metadata Agent
存储节点
├─ Cinder Volume
├─ Swift 服务进程
└─ Ceph OSD / MON / MDS
评论区