OpenStack组件详解:控制节点 vs 计算节点部署指南

深入解析OpenStack所有组件,掌握哪些必须装、哪些可选,主服务器和副服务器如何分配组件

前言

在部署OpenStack之前,你必须理解一个核心问题:OpenStack的组件不是必须全部安装的

理解各组件的用途、依赖关系,以及如何分配到不同的服务器上,是成功部署OpenStack的关键。

本文将详细讲解:

  1. OpenStack有哪些组件
  2. 每个组件的作用和依赖
  3. 必须安装的 vs 可选安装的
  4. 控制节点必须装的组件
  5. 计算节点必须装的组件
  6. All-in-One最小化部署
  7. 多节点分离部署

一、OpenStack组件全景图

1.1 OpenStack核心组件一览

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
┌─────────────────────────────────────────────────────────────────────────┐
│                           OpenStack 组件全家福                            │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────┐              │
│   │   Horizon   │    │   Keystone  │    │   Glance    │              │
│   │  Web界面    │    │  身份认证   │    │   镜像仓库   │              │
│   └─────────────┘    └─────────────┘    └─────────────┘              │
│         ↓                  ↓                  ↓                        │
│         └──────────────────┼──────────────────┘                        │
│                            │                                            │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────┐              │
│   │    Nova     │    │   Neutron   │    │   Cinder    │              │
│   │   计算服务   │    │   网络服务   │    │   块存储    │              │
│   └─────────────┘    └─────────────┘    └─────────────┘              │
│                                                                         │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────┐              │
│   │Placement    │    │   Swift     │    │    Heat     │              │
│   │  资源追踪   │    │  对象存储   │    │   编排服务   │              │
│   └─────────────┘    └─────────────┘    └─────────────┘              │
│                                                                         │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────┐              │
│   │  Ceilometer │    │   Ironic    │    │   Trove     │              │
│   │   监控计量  │    │  裸金属    │    │   数据库    │              │
│   └─────────────┘    └─────────────┘    └─────────────┘              │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘

1.2 组件分类

类别 组件 说明
核心组件 Keystone, Nova, Neutron, Glance 没有它们,OpenStack无法运行
重要组件 Cinder, Swift, Placement 大部分场景需要
可选组件 Horizon, Heat, Ceilometer 可以后加或用CLI替代
高级组件 Ironic, Trove, Magnum, Sahara 特定场景使用

二、必须安装的核心组件

2.1 必须组件一览

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
✅ 必须安装(没有它们,OpenStack无法运行):

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   ┌──────────┐    ┌──────────┐    ┌──────────┐               │
│   │ Keystone │ ←  │  任何组件  │    │          │               │
│   │  身份认证 │    │  都需要它  │    │          │               │
│   └──────────┘    └──────────┘    │          │               │
│         │                          │          │               │
│         │                          │          │               │
│   ┌──────────┐    ┌──────────┐    │          │               │
│   │   Nova    │    │  Placement│   │          │               │
│   │  计算服务  │ ←  │  资源追踪 │ ← │ nova-api │               │
│   └──────────┘    └──────────┘    │          │               │
│         │                          │          │               │
│         │                          │          │               │
│   ┌──────────┐    ┌──────────┐    │          │               │
│   │  Glance   │    │ Neutron  │    │          │               │
│   │  镜像服务  │    │  网络服务 │    │          │               │
│   └──────────┘    └──────────┘    │          │               │
│                                   └──────────┘               │
│                                                                 │
│   最小化运行需要:Keystone + Nova + Placement + Glance + Neutron  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

2.2 必须组件详解

① Keystone(身份认证服务)⭐ 必须安装

为什么必须?

  • 所有OpenStack组件都依赖Keystone进行认证
  • 没有Keystone,其他组件无法验证请求
  • 类似于Linux系统中的/etc/passwd

功能:

  • 用户认证(User)
  • 项目管理(Project/Tenant)
  • 角色权限(Role)
  • 服务目录(Service Catalog)
  • Token管理

依赖:

  • 数据库(MySQL/MariaDB)
  • 消息队列(RabbitMQ)

组件组成:

1
2
keystone
  └── wsgi-app (Apache/Nginx)

② Nova(计算服务)⭐ 必须安装

为什么必须?

  • Nova是OpenStack的核心,没有它无法创建虚拟机
  • 管理虚拟机的整个生命周期

Nova子服务:

子服务 功能 必须安装位置
nova-api 接收API请求 控制节点
nova-scheduler 调度虚拟机到合适主机 控制节点
nova-conductor 安全访问数据库 控制节点
nova-novncproxy VNC代理 控制节点/计算节点
nova-compute 运行虚拟机 计算节点

依赖:

  • Keystone(认证)
  • Glance(镜像)
  • Neutron(网络)
  • Placement(资源追踪)
  • 数据库
  • 消息队列

组件组成:

1
2
3
4
5
6
7
8
9
Nova (控制节点):
├── nova-api          ← 必须
├── nova-scheduler    ← 必须
├── nova-conductor    ← 必须
├── nova-novncproxy   ← 推荐
└── novaPlacement     ← 必须

Nova (计算节点):
└── nova-compute     ← 必须(只有这个)

③ Placement(资源追踪服务)⭐ 必须安装

为什么必须?

  • 从Newton版本开始,必须安装
  • 追踪所有资源的使用情况(CPU、内存、磁盘)
  • Nova调度器依赖它来选择合适的宿主机

功能:

  • 资源提供者管理
  • 资源使用统计
  • 调度决策支持

依赖:

  • Keystone
  • 数据库

**注意:**Placement曾经是Nova的一部分(nova-placement-api),现在独立出来了。


④ Glance(镜像服务)⭐ 必须安装

为什么必须?

  • 存储和管理虚拟机镜像
  • Nova创建虚拟机时需要从中获取镜像

功能:

  • 镜像上传和存储
  • 镜像格式转换
  • 镜像元数据管理
  • 镜像快照

支持的后端:

  • 本地文件系统
  • Ceph
  • Swift
  • NFS
  • S3

依赖:

  • Keystone
  • 数据库
  • 存储后端

⑤ Neutron(网络服务)⭐ 必须安装

为什么必须?

  • 管理OpenStack的网络连接
  • 没有它,虚拟机无法通信

Neutron子服务:

子服务 功能 必须安装位置
neutron-server API服务 控制节点
neutron-dhcp-agent DHCP服务 控制节点
neutron-l3-agent 路由/NAT 控制节点
neutron-openvswitch-agent OVS代理 计算节点/控制节点
neutron-linuxbridge-agent 网桥代理 计算节点/控制节点
neutron-metering-agent 流量计量 可选

网络类型:

  • Provider Network(桥接到物理网络)
  • Self-Service Network(VXLAN/GRE隧道)
  • Flat Network(无VLAN)

依赖:

  • Keystone
  • 数据库
  • 消息队列

2.3 必须组件的依赖关系

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
                         ┌─────────────┐
                         │   MySQL     │
                         │   数据库    │
                         └──────┬──────┘
                    ┌───────────┼───────────┐
                    │           │           │
                    ▼           ▼           ▼
            ┌───────────┐ ┌───────────┐ ┌───────────┐
            │ Keystone  │ │ Placement │ │  Glance   │
            │ (认证)    │ │ (资源追踪) │ │ (镜像)    │
            └─────┬─────┘ └─────┬─────┘ └─────┬─────┘
                  │             │             │
                  │             │             │
                  ▼             │             ▼
            ┌─────────────────────────────┐   │
            │           Nova             │   │
            │ ┌─────┐ ┌─────┐ ┌─────┐    │   │
            │ │ API │ │Sched│ │Cond │    │   │
            │ └─────┘ └─────┘ └─────┘    │   │
            └─────────────┬───────────────┘   │
                          │                   │
                          ▼                   │
                    ┌───────────┐             │
                    │ Neutron   │             │
                    │ (网络)    │             │
                    └─────┬─────┘             │
                          │                   │
                          ▼                   ▼
                    ┌─────────────────────────────┐
                    │        RabbitMQ            │
                    │        消息队列            │
                    └─────────────────────────────┘

三、可选组件详解

3.1 可选组件一览

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
○ 可选组件(没有它们,OpenStack也能运行):

┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   ┌──────────┐    ┌──────────┐    ┌──────────┐               │
│   │ Horizon  │    │  Cinder  │    │  Swift   │               │
│   │ Web界面  │    │ 块存储   │    │ 对象存储  │               │
│   └──────────┘    └──────────┘    └──────────┘               │
│                                                                 │
│   ┌──────────┐    ┌──────────┐    ┌──────────┐               │
│   │  Heat   │    │Ceilometer│    │ Ironic   │               │
│   │  编排   │    │  监控   │    │  裸金属   │               │
│   └──────────┘    └──────────┘    └──────────┘               │
│                                                                 │
│   ┌──────────┐    ┌──────────┐    ┌──────────┐               │
│   │  Trove  │    │ Magnum   │    │ Sahara   │               │
│   │  数据库  │    │容器编排 │    │ 大数据   │               │
│   └──────────┘    └──────────┘    └──────────┘               │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

3.2 Horizon(Web界面)— 推荐安装

功能:

  • Web方式管理OpenStack
  • 可视化创建虚拟机、网络、存储
  • 适合入门和日常管理

为什么不必须?

  • 可以完全用CLI命令替代
  • 经验丰富的运维人员更倾向CLI
  • API可以直接调用

安装位置: 控制节点


3.3 Cinder(块存储服务)— 大部分场景需要

功能:

  • 为虚拟机提供持久化块存储
  • 类似云硬盘(AWS EBS)
  • 支持多种后端

使用场景:

  • 数据库存储
  • 需要独立存储的应用
  • 需要快照的数据盘

存储后端:

后端 说明 成本
LVM 本地逻辑卷 免费
Ceph RBD 分布式存储 需要多节点
NFS 网络文件系统 中等
iSCSI 商业存储
NFS 开源方案 免费

Cinder子服务:

子服务 功能 位置
cinder-api API服务 控制节点
cinder-volume 卷管理 控制节点/存储节点
cinder-scheduler 调度 控制节点
cinder-backup 备份 存储节点

依赖: Keystone, 数据库, 消息队列


3.4 Swift(对象存储)— 特定场景需要

功能:

  • RESTful API访问的对象存储
  • 分布式、高可用
  • 类似AWS S3

使用场景:

  • 文件存储和备份
  • 静态资源托管
  • 图片、视频存储

与Cinder的区别:

特性 Cinder Swift
存储类型 块设备(硬盘) 对象(文件)
访问方式 挂载到VM API直接访问
协议 iSCSI, FC HTTP REST API
典型用途 数据库 图片、视频备份

Swift子服务:

子服务 功能 位置
swift-proxy 代理服务 控制节点
swift-account 账户服务 存储节点
swift-container 容器服务 存储节点
swift-object 对象服务 存储节点

3.5 Heat(编排服务)— 推荐安装

功能:

  • 基础设施即代码(IaC)
  • 使用YAML模板定义资源
  • 自动化部署复杂架构

使用场景:

  • 自动化部署
  • 环境标准化
  • 弹性伸缩

示例模板:

1
2
3
4
5
6
7
8
9
heat_template_version: 2021-04-16
resources:
  my_server:
    type: OS::Nova::Server
    properties:
      image: Ubuntu 22.04
      flavor: m1.large
      networks:
        - network: private-net

3.6 Ceilometer/Gnocchi(监控计量)— 可选

功能:

  • 收集资源使用数据
  • 计量和监控
  • 配额告警

组件:

  • Ceilometer:数据收集
  • Gnocchi:时序数据库和API
  • Panko:事件存储

3.7 高级组件

组件 功能 使用场景
Ironic 裸金属服务 直接管理物理服务器
Trove 数据库服务 托管数据库实例
Magnum 容器编排 管理和调度容器集群
Sahara 大数据服务 Hadoop、Spark集群
Designate DNS服务 自动管理DNS记录
Barbican 密钥管理 密钥和证书管理
Mistral 工作流 复杂业务流程
Zun 容器服务 直接运行Docker容器

四、控制节点必须装的组件

4.1 控制节点概述

控制节点是OpenStack的"大脑",负责:

  • API服务(接收请求)
  • 数据库操作
  • 消息队列处理
  • 调度决策
  • 管理计算节点

4.2 控制节点必须安装的组件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
┌─────────────────────────────────────────────────────────────────┐
│                        控制节点(Controller)                     │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                    基础服务                             │   │
│   ├─────────────────────────────────────────────────────────┤   │
│   │  ✅ MySQL/MariaDB    数据库                             │   │
│   │  ✅ RabbitMQ         消息队列                           │   │
│   │  ✅ Memcached       Token缓存                          │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                    核心组件                             │   │
│   ├─────────────────────────────────────────────────────────┤   │
│   │  ✅ Keystone        身份认证(必须)                     │   │
│   │  ✅ Nova-API       计算API(必须)                      │   │
│   │  ✅ Nova-Scheduler 调度器(必须)                      │   │
│   │  ✅ Nova-Conductor  数据库中介(必须)                  │   │
│   │  ✅ Placement      资源追踪(必须)                     │   │
│   │  ✅ Glance-API    镜像API(必须)                      │   │
│   │  ✅ Neutron-Server 网络API(必须)                      │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                    网络代理(必须有)                    │   │
│   ├─────────────────────────────────────────────────────────┤   │
│   │  ✅ Neutron-DHCP-Agent    DHCP服务                      │   │
│   │  ✅ Neutron-L3-Agent     路由/NAT                       │   │
│   │  ✅ Neutron-OVS-Agent    虚拟交换机                     │   │
│   │     或                                                    │   │
│   │  ✅ Neutron-Linuxbridge-Agent   Linux网桥              │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                    可选组件                             │   │
│   ├─────────────────────────────────────────────────────────┤   │
│   │  ○ Horizon          Web界面                             │   │
│   │  ○ Cinder-API       块存储API                            │   │
│   │  ○ Cinder-Scheduler 存储调度                           │   │
│   │  ○ Heat-API        编排API                              │   │
│   │  ○ Nova-Novncproxy VNC代理(推荐安装)                  │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

4.3 必须安装的完整列表

基础服务(必须):

组件 说明 必须性
MySQL/MariaDB 数据库 ⭐ 必须
RabbitMQ 消息队列 ⭐ 必须
Memcached Token缓存 推荐
NTP 时间同步 推荐

核心服务(必须):

组件 必须性
keystone(Apache/Nginx) ⭐ 必须
nova-api ⭐ 必须
nova-scheduler ⭐ 必须
nova-conductor ⭐ 必须
nova-novncproxy 推荐
placement-api ⭐ 必须
glance-api ⭐ 必须
glance-registry ⭐ 必须
neutron-server ⭐ 必须

网络服务(必须):

组件 必须性
neutron-dhcp-agent ⭐ 必须
neutron-l3-agent ⭐ 必须
neutron-openvswitch-agent 或 neutron-linuxbridge-agent ⭐ 必须
neutron-metadata-agent 推荐

4.4 控制节点资源需求

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
┌─────────────────────────────────────────────────────────────────┐
│                      控制节点资源配置                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   最低配置(能运行):                                            │
│   ├── CPU:4核心                                                │
│   ├── 内存:8GB                                                  │
│   └── 磁盘:50GB                                                 │
│                                                                 │
│   推荐配置(生产环境):                                          │
│   ├── CPU:8-16核心                                             │
│   ├── 内存:16-32GB                                              │
│   └── 磁盘:100GB+ SSD                                          │
│                                                                 │
│   高可用配置:                                                   │
│   ├── CPU:16-32核心                                            │
│   ├── 内存:32-64GB                                              │
│   └── 磁盘:200GB+ NVMe SSD                                     │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

五、计算节点必须装的组件

5.1 计算节点概述

计算节点是OpenStack的"肌肉",负责:

  • 运行虚拟机(KVM/Xen/VMware)
  • 提供计算资源(CPU、内存)
  • 连接虚拟网络

5.2 计算节点必须安装的组件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
┌─────────────────────────────────────────────────────────────────┐
│                        计算节点(Compute)                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                    核心组件                             │   │
│   ├─────────────────────────────────────────────────────────┤   │
│   │  ✅ nova-compute        虚拟机管理(必须)               │   │
│   │  ✅ neutron-ovs-agent   网络代理(必须)                 │   │
│   │     或                                                    │   │
│   │  ✅ neutron-linuxbridge-agent                           │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                    虚拟化平台                           │   │
│   ├─────────────────────────────────────────────────────────┤   │
│   │  ✅ KVM/QEMU          主流选择                          │   │
│   │  或                                                         │   │
│   │  ○ VMware ESXi        商业方案                          │   │
│   │  ○ Hyper-V            Windows环境                       │   │
│   │  ○ Xen                特定场景                          │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                    辅助服务                             │   │
│   ├─────────────────────────────────────────────────────────┤   │
│   │  ○ nova-compute-libvirt  Libvirt连接                   │   │
│   │  ○ neutron-metadata-agent  元数据服务                   │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

5.3 最小化计算节点

计算节点只需要两个核心组件:

最小必须安装:

组件 必须性 说明
nova-compute ⭐ 必须 运行KVM,创建虚拟机
neutron-linuxbridge-agent 或 neutron-openvswitch-agent ⭐ 必须 网络代理

如果使用其他虚拟化:

虚拟化 nova-compute版本
KVM/QEMU nova-compute-kvm
VMware nova-compute-vmware
Hyper-V nova-compute-hyperv
Xen nova-compute-xenserver

5.4 计算节点资源需求

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
┌─────────────────────────────────────────────────────────────────┐
│                      计算节点资源配置                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   最低配置(能运行虚拟机):                                      │
│   ├── CPU:4核心(支持VT-x/AMD-V)                               │
│   ├── 内存:8GB(预留2GB给系统)                                 │
│   └── 磁盘:100GB                                               │
│                                                                 │
│   推荐配置(生产环境):                                          │
│   ├── CPU:8-16核心                                             │
│   ├── 内存:32-128GB                                            │
│   └── 磁盘:500GB+ SSD(系统)+ 数据盘                          │
│                                                                 │
│   高密度配置:                                                   │
│   ├── CPU:32-64核心                                            │
│   ├── 内存:256-512GB                                           │
│   └── 磁盘:多盘位NVMe SSD                                      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

5.5 计算节点详细配置

KVM安装清单:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 操作系统
Ubuntu 22.04 Server / CentOS Stream

# KVM虚拟化
apt install qemu-kvm libvirt-daemon-system

# OpenStack组件
apt install nova-compute
apt install neutron-linuxbridge-agent
# 或
apt install neutron-openvswitch-agent

# 可选:Libvirt配置
apt install libvirt-clients

Nova-Compute配置:

1
2
3
4
5
6
7
8
9
# /etc/nova/nova.conf

[libvirt]
virt_type = kvm
cpu_mode = host-passthrough

[neutron]
# 如果使用OVS
# 如果使用Linuxbridge

六、最小化部署方案

6.1 All-in-One 最小化方案

场景: 学习、个人Homelab、小规模测试

架构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
┌─────────────────────────────────────────────────────────────────┐
│                        单节点(All-in-One)                      │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                        控制节点                         │   │
│   │  ├── MySQL/MariaDB                                      │   │
│   │  ├── RabbitMQ                                           │   │
│   │  ├── Keystone                                           │   │
│   │  ├── Nova(API/Scheduler/Conductor)                    │   │
│   │  ├── Placement                                          │   │
│   │  ├── Glance                                             │   │
│   │  ├── Neutron(Server + Agents)                        │   │
│   │  ├── Horizon(可选)                                    │   │
│   │  └── Cinder(可选)                                     │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│   ┌─────────────────────────────────────────────────────────┐   │
│   │                        计算节点                         │   │
│   │  ├── nova-compute                                       │   │
│   │  └── neutron-linuxbridge-agent                         │   │
│   └─────────────────────────────────────────────────────────┘   │
│                                                                 │
│   注意:控制节点服务 + 计算节点服务安装在同一台机器上              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

安装的组件:

组件 必须/可选
MySQL 必须
RabbitMQ 必须
Memcached 推荐
Keystone 必须
nova-api 必须
nova-scheduler 必须
nova-conductor 必须
nova-compute 必须
placement-api 必须
glance-api 必须
neutron-server 必须
neutron-dhcp-agent 必须
neutron-l3-agent 必须
neutron-linuxbridge-agent 必须
Horizon 推荐
Cinder 可选
Heat 可选

最低资源需求:

1
2
3
CPU:4核心(支持VT-x)
内存:8GB(推荐16GB)
磁盘:60GB

可以运行的虚拟机:

  • 1-2台微型虚拟机(1vCPU/512MB)
  • 或1台小型虚拟机(2vCPU/2GB)

6.2 两节点方案

场景: 小规模生产、学习多节点

架构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
┌─────────────────────────────────────────────────────────────────┐
│                    两节点部署架构                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   ┌─────────────────────────┐    ┌─────────────────────────┐  │
│   │      控制节点            │    │       计算节点            │  │
│   ├─────────────────────────┤    ├─────────────────────────┤  │
│   │  MySQL                  │    │                         │  │
│   │  RabbitMQ               │    │  nova-compute          │  │
│   │  Keystone               │◄──►│  neutron-linuxbridge   │  │
│   │  Nova(控制服务)        │    │                         │  │
│   │  Placement              │    │                         │  │
│   │  Glance                 │    │                         │  │
│   │  Neutron(API+Agents)  │    │                         │  │
│   │  Horizon(可选)         │    │                         │  │
│   └─────────────────────────┘    └─────────────────────────┘  │
│                                                                 │
│   ←───────  网络通信 ────────→                                  │
│   ←───────  消息队列 ────────→                                  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

控制节点服务:

组件 说明
MySQL 数据库
RabbitMQ 消息队列
Keystone 身份认证
nova-api API
nova-scheduler 调度
nova-conductor 数据库中介
placement-api 资源追踪
glance-api 镜像
neutron-server 网络API
neutron-dhcp-agent DHCP
neutron-l3-agent 路由
neutron-linuxbridge-agent 网络代理
Horizon Web界面(可选)

计算节点服务:

组件 说明
nova-compute 虚拟机运行
neutron-linuxbridge-agent 网络代理
libvirtd 虚拟化守护进程

6.3 三节点高可用方案

场景: 小规模生产、高可用需求

架构:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
┌─────────────────────────────────────────────────────────────────┐
│                      三节点高可用架构                            │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐ │
│   │   控制节点 1     │  │   控制节点 2     │  │   控制节点 3     │ │
│   ├─────────────────┤  ├─────────────────┤  ├─────────────────┤ │
│   │ MySQL (Galera)  │  │ MySQL (Galera)  │  │ MySQL (Galera)  │ │
│   │ RabbitMQ (集群) │  │ RabbitMQ (集群) │  │ RabbitMQ (集群) │ │
│   │ Keystone        │  │ Keystone        │  │ Keystone        │ │
│   │ Nova            │  │ Nova            │  │ Nova            │ │
│   │ Placement       │  │ Placement       │  │ Placement       │ │
│   │ Glance          │  │ Glance          │  │ Glance          │ │
│   │ Neutron         │  │ Neutron         │  │ Neutron         │ │
│   │ Horizon         │  │ Horizon         │  │ Horizon         │ │
│   └────────┬────────┘  └────────┬────────┘  └────────┬────────┘ │
│            │                      │                      │        │
│            └──────────────────────┼──────────────────────┘        │
│                                   │                                 │
│                    ┌──────────────┴──────────────┐                │
│                    │         网络/存储           │                │
│                    └──────────────┬──────────────┘                │
│                                   │                                 │
│   ┌─────────────────┐  ┌──────────┴─────────┐  ┌─────────────────┐ │
│   │   计算节点 1     │◄─┤       计算节点 2     │◄─┤   计算节点 3     │ │
│   ├─────────────────┤  ├─────────────────┤  ├─────────────────┤ │
│   │ nova-compute    │  │ nova-compute    │  │ nova-compute    │ │
│   │ neutron-agent   │  │ neutron-agent   │  │ neutron-agent   │ │
│   └─────────────────┘  └─────────────────┘  └─────────────────┘ │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

七、组件部署位置总结

7.1 组件部署对照表

组件 控制节点 计算节点 存储节点 说明
Keystone ✅ 必须 API认证
Nova-API ✅ 必须 API服务
Nova-Scheduler ✅ 必须 调度器
Nova-Conductor ✅ 必须 数据库中介
Nova-Novncproxy ✅ 推荐 VNC代理
Nova-Compute ✅ 必须 虚拟机运行
Placement ✅ 必须 资源追踪
Glance-API ✅ 必须 镜像API
Glance-Registry ✅ 必须 镜像注册
Neutron-Server ✅ 必须 网络API
Neutron-DHCP-Agent ✅ 必须 DHCP服务
Neutron-L3-Agent ✅ 必须 路由服务
Neutron-OVS-Agent ✅ 必须 ✅ 必须 OVS代理
Neutron-Linuxbridge-Agent ✅ 必须 ✅ 必须 网桥代理
Neutron-Metadata-Agent ✅ 推荐 元数据
Cinder-API ✅ 可选 存储API
Cinder-Scheduler ✅ 可选 存储调度
Cinder-Volume ✅ 可选 卷管理
Swift-Proxy ✅ 可选 对象代理
Swift-Account ✅ 可选 账户服务
Swift-Container ✅ 可选 容器服务
Swift-Object ✅ 可选 对象服务
Horizon ✅ 推荐 Web界面
Heat-API ✅ 可选 编排API
MySQL/MariaDB ✅ 必须 数据库
RabbitMQ ✅ 必须 消息队列

7.2 必须安装 vs 可选安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
必须安装(没有它们OpenStack无法运行):

控制节点:
├── MySQL/MariaDB
├── RabbitMQ
├── Memcached
├── Keystone
├── Nova-API
├── Nova-Scheduler
├── Nova-Conductor
├── Placement-API
├── Glance-API
├── Glance-Registry
├── Neutron-Server
├── Neutron-DHCP-Agent
├── Neutron-L3-Agent
└── Neutron-网络代理

计算节点:
├── nova-compute
└── neutron-网络代理
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
可选安装(没有它们OpenStack可以运行,但功能受限):

控制节点:
├── Horizon          ← 推荐(Web管理界面)
├── Cinder-API      ← 有数据库需求时
├── Cinder-Scheduler ← 有存储需求时
├── Swift-Proxy      ← 有对象存储需求时
├── Heat-API         ← 需要编排时
├── Nova-Novncproxy  ← 需要VNC访问时
└── Neutron-Metadata-Agent ← 计算节点需要时

存储节点:
├── Cinder-Volume    ← 块存储
├── Swift-Account    ← 对象存储
├── Swift-Container  ← 对象存储
└── Swift-Object    ← 对象存储

八、实战:不同场景的组件选择

8.1 学习场景(DevStack/MicroStack)

目标: 快速体验OpenStack

安装方式: All-in-One

最小化配置:

1
2
3
4
5
# DevStack local.conf
ENABLED_SERVICES=key,mysql,rabbitmq
ENABLED_SERVICES+=,nova,placement,neutron
ENABLED_SERVICES+=,glance,horizon
ENABLED_SERVICES+=,cinder

资源需求:

  • CPU:4核心
  • 内存:8GB(建议16GB)
  • 磁盘:60GB

安装什么:

  • Keystone ✅
  • Nova ✅
  • Placement ✅
  • Glance ✅
  • Neutron ✅
  • Horizon ✅
  • Cinder ✅
  • Swift ❌
  • Heat ❌

8.2 小规模生产(2-3台服务器)

目标: 支撑小团队

架构: 1控制节点 + 2计算节点

控制节点安装:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
基础服务:
├── MySQL ✅
├── RabbitMQ ✅
├── Memcached ✅

核心服务:
├── Keystone ✅
├── Nova-API ✅
├── Nova-Scheduler ✅
├── Nova-Conductor ✅
├── Placement ✅
├── Glance ✅
├── Neutron-Server ✅
├── Neutron-DHCP ✅
├── Neutron-L3 ✅
├── Neutron-网桥 ✅

可选服务:
├── Horizon ✅(推荐)
├── Cinder-API ✅
├── Cinder-Scheduler ✅
└── Nova-Novncproxy ✅

计算节点安装:

1
2
nova-compute ✅
neutron-linuxbridge-agent ✅

资源需求:

  • 控制节点:8核/16GB/100GB
  • 计算节点×2:8核/32GB/500GB

8.3 中等规模生产(5-10台服务器)

目标: 企业级私有云

架构: 3控制节点 + 5计算节点 + 3存储节点

控制节点安装:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
高可用组件:
├── MySQL (Galera集群) ✅
├── RabbitMQ (集群) ✅
├── HAProxy + Keepalived ✅

核心服务(全部安装):
├── Keystone ✅
├── Nova ✅
├── Placement ✅
├── Glance ✅
├── Neutron ✅
├── Horizon ✅
├── Cinder-API ✅
├── Cinder-Scheduler ✅
├── Heat ✅
└── Ceilometer ✅

计算节点安装:

1
2
3
nova-compute ✅
neutron-openvswitch-agent ✅
neutron-metadata-agent ✅

存储节点安装:

1
2
3
4
Cinder-Volume ✅
Swift-Account ✅
Swift-Container ✅
Swift-Object ✅

8.4 大规模生产(20+台服务器)

目标: 大型企业/云服务商

架构:

  • 3+ 控制节点(高可用)
  • 10+ 计算节点
  • 3+ Ceph存储节点
  • 3+ 网络节点

控制平面服务:

  • Keystone(多节点)
  • Nova(多节点)
  • Neutron(多节点 + DVR)
  • Glance(多节点)
  • Cinder(多节点 + Ceph后端)
  • Swift(Ceph RGW替代)

计算节点:

  • nova-compute
  • neutron-openvswitch-agent
  • ceph-osd(可选)

存储节点:

  • Ceph MON
  • Ceph OSD
  • Ceph RGW

九、常见问题

9.1 Q&A

Q1:控制节点和计算节点必须分开吗?

A:不是必须的。All-in-One模式可以把所有服务装在一台机器上。但生产环境建议分开:

  • 安全性:控制节点更安全,计算节点可以暴露
  • 性能:分开后互不影响
  • 扩展性:可以单独扩展计算节点

Q2:哪些组件必须在控制节点?

A:所有API服务和数据库服务必须在控制节点:

  • nova-api, nova-scheduler, nova-conductor
  • glance-api, glance-registry
  • neutron-server
  • keystone
  • placement-api
  • cinder-api, cinder-scheduler
  • Horizon
  • MySQL, RabbitMQ

Q3:计算节点最少需要安装什么?

A:只需要两个组件:

  • nova-compute(必须)
  • neutron-网络代理(必须)

计算节点不需要数据库、消息队列、API服务。


Q4:Cinder存储节点必须安装吗?

A:不是必须的。分为三种情况:

情况 是否需要Cinder
虚拟机使用本地磁盘 不需要
需要云硬盘 需要
使用Ceph做存储后端 需要

Q5:可以先安装核心组件,之后再添加可选组件吗?

A:完全可以!OpenStack支持组件热添加。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 先安装最小化
./stack.sh  # 只有核心组件

# 之后添加Cinder
./unstack.sh
# 修改local.conf添加Cinder
./stack.sh

# 或者使用openstack命令直接添加
openstack service create --name cinder volume

Q6:Horizon必须安装吗?

A:不是必须的,但强烈推荐。

  • 入门友好,图形界面
  • 可以用CLI命令替代
  • 经验丰富的运维通常不用Horizon
  • API可以直接调用

9.2 组件依赖速查

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
必须安装(基础):
├── MySQL ─────────────────────────────────┐
├── RabbitMQ ──────────────────────────────┼─ 控制节点
└── Memcached ────────────────────────────┘

必须安装(核心):
├── Keystone ← 所有组件都依赖它
├── Nova ← 必须
│   ├── API ← 控制节点
│   ├── Scheduler ← 控制节点
│   ├── Conductor ← 控制节点
│   └── Compute ← 计算节点
├── Placement ← Nova必须
├── Glance ← Nova必须
│   └── 需要存储后端
└── Neutron ← Nova必须
    ├── Server ← 控制节点
    ├── DHCP Agent ← 控制节点
    ├── L3 Agent ← 控制节点
    └── 网桥代理 ← 控制节点 + 计算节点

可选安装:
├── Horizon ← 推荐,Web界面
├── Cinder ← 需要持久存储时
├── Swift ← 需要对象存储时
├── Heat ← 需要编排时
└── Ceilometer ← 需要监控时

十、总结

10.1 核心要点

  1. 必须安装的组件(没有它们OpenStack无法运行):

    • Keystone(身份认证)
    • Nova(计算服务)
    • Placement(资源追踪)
    • Glance(镜像服务)
    • Neutron(网络服务)
    • MySQL + RabbitMQ(基础服务)
  2. 控制节点必须安装的:

    • 所有API服务
    • 所有调度服务
    • 数据库
    • 消息队列
    • 网络代理(OVS/Linuxbridge)
  3. 计算节点必须安装的:

    • nova-compute
    • neutron-网络代理
  4. 可选组件:

    • Horizon(Web界面)
    • Cinder(块存储)
    • Swift(对象存储)
    • Heat(编排)

10.2 部署选择指南

场景 推荐方案 说明
学习体验 All-in-One 全部装一台机器
个人Homelab All-in-One或2节点 1-2台服务器
小规模生产 2-3节点 1控制+2计算
中等规模生产 5-10节点 3控制+5计算+存储
大规模生产 20+节点 完整HA架构

10.3 记住这个原则

控制节点是"大脑",计算节点是"肌肉"。

  • 大脑必须复杂(所有管理服务)
  • 肌肉可以简单(只需要运行虚拟机)
  • 分离部署更安全、更灵活

本文详细讲解了OpenStack各组件的用途和部署位置,希望能帮助你更好地规划OpenStack架构。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计