OpenStack零基础入门:云管理操作系统的核心原理与实战
前言:这门课解决什么问题
很多学云计算的人,学完KVM虚拟化之后,面临一个问题:
1
2
3
4
5
|
"虚拟机会了,Docker也会了,
但企业里真正跑业务的云平台是什么?
OpenStack听起来很厉害,但一打开官方文档,
十几种服务(Nova、Neutron、Cinder、Glance……)
完全不知道从哪下手。"
|
本文的目标就是:用生活中的比喻和清晰的逻辑,把OpenStack的核心概念串成一条线,让你学完能用自己的话解释给别人听。
第一章:OpenStack是什么——重新理解"云操作系统"
1.1 常见误解:OpenStack不是虚拟化
很多人以为OpenStack是"更高级的VMware",这个理解是错的。
1
2
3
4
5
6
7
8
9
10
|
VMware的作用:
→ 在一台物理服务器上虚拟出多台虚拟机
→ 解决的是"一台物理机怎么变成多台用"的问题
→ 工具是VMware ESXi / vSphere
OpenStack的作用:
→ 把整个数据中心的所有物理资源(计算/存储/网络)统一管理
→ 向上层用户提供"按需申请"的资源服务
→ 解决的是"数据中心怎么像一台计算机一样被按需使用"的问题
→ 工具是OpenStack(一个分布式软件平台)
|
打一个更精确的比喻:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
传统数据中心 = 一家没有接待台、没有预约系统的酒店
→ 客人(应用)来了,要自己找房间、自己通水电、自己铺床
→ 没有标准化,没有自动化
VMware虚拟化 = 酒店有了前台
→ 可以分配房间(虚拟机)了
→ 但客人还是要自己布置房间
OpenStack = 酒店的完整智能化系统
→ 接待台自动分配房间(计算资源)
→ 房间里的水电按需供应(弹性伸缩)
→ 订房、退房全部自动化(API接口)
→ 酒店根据入住率自动开关楼层(资源调度)
→ 客人不需要知道酒店有多少房间、哪台空调在哪层
|
OpenStack的本质:一个把数据中心当成一台超级计算机来运营的软件平台。
1.2 OpenStack的官方定义
OpenStack是一个开源的云管理平台,由NASA(美国宇航局)和Rackspace于2010年联合发起,目前由OpenStack基金会维护。
1
2
3
4
5
|
OpenStack官方定义:
"OpenStack是一个云操作系统,
控制整个数据中心的大量计算、存储和网络资源,
通过一个仪表盘统一管理,
同时提供一套API供外部程序调用。"
|
三个关键词:
1
2
3
|
关键词1:控制 → 不自己跑业务,而是管理别人
关键词2:资源池 → 把分散的物理资源整合成统一的池
关键词3:API → 所有操作都可以通过编程接口调用
|
1.3 开源的意义——为什么OpenStack不是"一家公司的产品"
和VMware(商业公司)、阿里云(阿里巴巴)、AWS(亚马逊)不同,OpenStack是一个开源项目:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
商业云 vs OpenStack开源云:
商业云(AWS/阿里云):
→ 技术栈不透明(你不知道底层怎么实现的)
→ 定价权在服务商(说涨价就涨价)
→ 迁移成本高(被绑定)
→ 数据在自己服务器上(合规性好,适合金融/政务)
OpenStack开源云:
→ 技术栈完全透明(代码都在GitHub上)
→ 任何公司都可以免费使用和修改
→ 不被单一厂商绑定(可以用华为的插件,也可以用红帽的)
→ 适合企业自建私有云(政务云、金融云、科研云)
|
中国政务云的典型选择:很多政府机构选择OpenStack,是因为数据不能上公有云(合规要求),但又需要一个类似AWS的私有云管理平台。
第二章:OpenStack的整体架构——积木式设计
2.1 为什么OpenStack要做成"积木式"
OpenStack的架构设计哲学是:每个核心功能独立成一个模块,不同模块之间通过标准接口通信,可以单独升级、替换或扩展。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
类比:安卓手机 vs 苹果手机
苹果(iOS):
→ 所有组件(相机/相册/短信/浏览器)都是苹果自己的
→ 高度整合,但你想换一个相机应用?没门
→ 苹果说用什么,就用什么
安卓(Android):
→ 相机可以用Google Camera,也可以用小米相机
→ 短信可以用系统默认,也可以换成QQ邮箱
→ 自由度高,但碎片化问题严重
OpenStack的做法:
→ 相机的接口是统一的(标准API)
→ 但相机本身可以是华为写的,也可以是红帽写的
→ 保证了自由度的同时,又不至于碎片化
|
这种架构叫做:松耦合(Loose Coupling)。
2.2 核心组件一览
OpenStack有十几种服务,但核心的只有5个(简称"两块砖加三根柱"):
1
2
3
4
5
6
7
8
9
10
|
OpenStack核心组件记忆法:"KNGNC"(凯恩尼克)
K - Keystone (认证服务)
N - Neutron (网络服务)
G - Glance (镜像服务)
N - Nova (计算服务)
C - Cinder (块存储服务)
加上一个界面:
Horizon (Web管理界面)
|
2.3 组件之间的关系——用点餐来理解
想象你去一家自助餐厅吃饭:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
顾客(用户)
↓
迎宾台(Horizon Web界面 / OpenStack API)
↓
┌──────────────────────────────────────────┐
│ OpenStack 云平台 │
│ │
│ [Keystone] ←→ "你的身份证有效吗?" │
│ │
│ [Glance] ←→ "今天供应什么菜品?" │
│ │
│ [Nova] ←→ "你的餐盘在哪?" │
│ │
│ [Neutron] ←→ "菜怎么送到你桌上?" │
│ │
│ [Cinder] ←→ "你有足够的盘子吗?" │
│ │
└──────────────────────────────────────────┘
↓
上菜(云主机实例启动成功)
|
第三章:Keystone——所有服务的"守门人"
3.1 没有Keystone的世界
想象一个没有门禁的小区:
1
2
3
4
5
6
7
8
9
10
11
|
小区A(没有门禁):
→ 任何人可以进入任何楼栋
→ 张三可以进李四家(安全隐患)
→ 王五可以随意使用公共设施
→ 出了问题不知道是谁干的
小区B(有Keystone门禁):
→ 每个人进门要刷卡
→ 系统记录:谁、什么时候、进了哪栋楼
→ 没有合法身份的人进不来
→ 所有行为都有据可查
|
3.2 Keystone的工作原理
Keystone是OpenStack的身份认证和权限管理服务。所有其他组件在启动之前,都要先问Keystone:“这个请求是合法的吗?”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
Keystone验证流程:
用户发请求:"帮我创建一台云主机"
↓
Keystone问两个问题:
问题一:你是谁?(Authentication 认证)
→ 验证用户名和密码(Token机制)
→ 类似于刷身份证,门禁系统查你是否是本小区居民
问题二:你能做什么?(Authorization 授权)
→ 查权限表:普通租户 vs 管理员
→ 普通租户:可以创建2台云主机
→ 管理员:可以创建100台云主机,可以管理所有租户
→ 类似于普通住户卡只能开自家大门,管理员卡可以开所有门
验证通过:
↓
Keystone发一张"临时通行证"(Token)
↓
用户拿着通行证去Nova(计算服务)申请云主机
↓
Nova看到通行证有效,才会执行创建操作
|
3.3 租户(Tenant)的概念——多租户隔离
Keystone引入了一个非常重要的概念:租户(Tenant)。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
生活中的租户概念:
写字楼租户:
→ A公司租了3楼(租户A)
→ B公司租了5楼(租户B)
→ 两家公司的员工互不相通(物理隔离)
→ 租户A的员工不能进B公司的楼层
OpenStack多租户:
→ A业务部门(租户A):分配了100核CPU、500GB内存
→ B业务部门(租户B):分配了50核CPU、200GB内存
→ 两家部门的云主机完全隔离(网络隔离 + 资源隔离)
→ 租户A的云主机绝对访问不到租户B的资源
|
多租户的意义:
- 同一个OpenStack集群,可以同时给多个公司/部门使用
- 每个公司以为自己是"唯一的用户",实际是共享基础设施
- 这就是"私有云"的核心价值:共享成本 + 隔离安全
第四章:Glance——云主机的"操作系统镜像仓库"
4.1 什么是镜像(Image)
当你创建一台云主机时,你需要告诉OpenStack:“这台主机要装什么操作系统?”
这个"操作系统"就是一个镜像文件。
1
2
3
4
5
|
镜像(Image)是什么:
→ 类似于装好了操作系统的U盘
→ Windows镜像:装好了Windows Server 2022的完整系统
→ Linux镜像:装好了Ubuntu 22.04的完整系统
→ 你告诉OpenStack"用哪个镜像",它就会给你一台预装好系统的云主机
|
4.2 Glance的职责
Glance是OpenStack的镜像管理服务,负责:
1
2
3
4
5
6
7
8
9
10
11
|
Glance的两大职责:
职责1:存储镜像
→ 大量操作系统镜像文件统一存储在一个地方
→ 支持多种格式:qcow2(最常用)、vhd、vmdk、raw
→ qcow2格式支持"写时复制"(Copy-on-Write),节省存储空间
职责2:提供镜像API
→ 上传镜像、查询镜像、删除镜像
→ 其他服务(Nova)通过API获取镜像
→ 支持镜像版本管理(同一个OS的多个版本)
|
4.3 镜像格式详解:qcow2 vs raw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
qcow2 vs raw(两种镜像格式):
raw格式(原始镜像):
→ 镜像文件有多大,占用存储就有多大
→ 例如:Ubuntu 22.04 raw镜像 40GB,你就要占用40GB存储
→ 优点:性能最好
→ 缺点:占用存储,不支持快照
qcow2格式(写时复制镜像):
→ 基础镜像(base image)只有40GB
→ 但如果有100台云主机,它们共享同一个基础镜像
→ 每台主机新写入的数据才单独占用空间
→ 100台云主机,实际可能只占60GB,而不是4000GB
→ 优点:节省存储空间,支持快照和克隆
→ 缺点:性能略低于raw(约5-10%损耗)
→ 生产环境最常用
|
第五章:Nova——计算服务,云主机的"生产线"
5.1 Nova的整体架构
Nova是OpenStack最核心的组件,负责云主机的创建、调度和管理。
1
2
3
4
5
6
7
8
9
|
Nova的组成部分(每个都是一个独立进程):
nova-api → 接收用户请求(创建/删除/查询云主机)
nova-scheduler → 决策"在哪台物理机上创建"(调度器)
nova-conductor → 连接数据库,查询和更新数据
nova-compute → 真正执行创建云主机的进程(在计算节点上)
nova-cert → 证书服务(X.509证书管理)
nova-consoleauth → 控制台认证(让你通过浏览器看到云主机界面)
nova-novncproxy → VNC代理(远程桌面访问)
|
5.2 Nova创建云主机的完整流程
这是理解OpenStack最关键的过程,用10步说清楚:
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
46
47
|
用户点击"创建云主机"(通过Horizon界面或API)
↓
第1步:nova-api接收请求
→ "用户要创建一台云主机:4核CPU、8GB内存、Ubuntu 22.04"
→ 验证Token是否有效(问Keystone)
→ 验证通过,继续
第2步:nova-api查询数据库
→ 查询镜像信息(Ubuntu 22.04的Glance镜像在哪?)
→ 查询网络信息(这个租户有哪些网络可用?)
→ 查询可用域信息(有哪些计算节点?)
第3步:nova-api请求nova-scheduler调度
→ "这台云主机应该在哪台物理机上创建?"
第4步:nova-scheduler做调度决策
→ 考虑因素:
├─ CPU负载:选负载最低的节点
├─ 内存:选内存最充裕的节点
├─ 可用域:某些云主机要求在特定可用域
└─ 亲和性/反亲和性:某些服务要分布在不同物理机(防止一台宕机全挂)
→ 决策:选Compute-03节点
第5步:nova-api告诉nova-conductor调度结果
→ "Compute-03节点,请创建这台云主机"
第6步:nova-conductor通过消息队列(RabbitMQ)通知Compute-03
第7步:Compute-03节点的nova-compute收到消息
→ 向Glance下载Ubuntu 22.04镜像
→ 向Neutron申请网络(IP、端口)
→ 向Cinder申请云硬盘(如果需要)
第8步:nova-compute调用Hypervisor(KVM)创建虚拟机
→ KVM读取镜像文件
→ 分配vCPU和内存
→ 配置虚拟网卡
→ 挂载云硬盘
→ 启动虚拟机
第9步:云主机启动成功
→ nova-compute向数据库报告状态:ACTIVE
→ 用户可以在Horizon界面看到云主机状态变为"运行中"
第10步:用户通过VNC或SSH连接云主机
→ nova-novncproxy提供远程桌面访问
→ Neutron配置的浮动IP提供公网访问
|
5.3 调度器(Scheduler)的调度算法
nova-scheduler有多种调度算法,选择哪种,决定了资源如何分配:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
常用调度算法:
算法1:Chance Scheduler(随机调度)
→ 随机选一台有可用资源的节点
→ 简单,但不智能
→ 适合测试环境
算法2:Filter Scheduler(过滤调度)⭐最常用
→ 第一步过滤(Filter):排除不符合条件的节点
├─ AvailabilityZoneFilter:排除不在指定可用域的节点
├─ CoreFilter:排除CPU核心数不足的节点
├─ RAMFilter:排除内存不足的节点
└─ DiskFilter:排除磁盘空间不足的节点
→ 第二步权重(Weighing):对过滤后的节点按优先级排序
├─ 内存优先:选剩余内存最多的节点
├─ 负载最低:选当前CPU负载最低的节点
└─ 最小空闲资源:尽量让所有节点负载均衡
算法3:Filters调度顺序(生产环境典型配置)
RetryFilter → AvailabilityZoneFilter → ComputeFilter
→ ComputeCapabilitiesFilter → ImagePropertiesFilter → ServerGroupAntiAffinityFilter
|
第六章:Neutron——网络服务,云主机的"高速公路系统"
6.1 网络——OpenStack中最复杂的部分
很多人学OpenStack,最大的卡点就是Neutron(网络服务)。原因很简单:网络的概念本身就复杂,而Neutron又要处理多种网络场景。
先理解现实中的一个场景:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
现实生活中的网络需求:
需求A:公司内部通信
→ 市场部的人要和财务部的人互相通信
→ 但不能让竞争对手通过互联网访问公司内部
需求B:对外提供服务
→ 公司的网站需要被公网用户访问
→ 但不能让公网用户访问公司内部其他系统
需求C:隔离
→ 财务部的数据不能被其他部门看到
→ 不同项目组之间的网络要隔离
需求D:弹性
→ 业务高峰期要能临时增加带宽
→ 业务低峰期要能释放资源
|
Neutron要同时满足以上所有需求,所以它的设计比较复杂。
6.2 三种网络模式:Flat、FlatDHCP、vLAN
这是OpenStack网络的基础概念,用生活中的例子来理解:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
OpenStack网络三种模式(类比:小区网络建设):
模式1:Flat(扁平网络)——最简单
→ 小区里只有一个网段,所有住户都在同一个大局域网里
→ 优点:简单,不需要配置
→ 缺点:无法隔离,IP容易冲突
→ 类比:整个小区共用一个交换机,所有人都在同一层
模式2:FlatDHCP(DHCP扁平网络)——加了DHCP自动分配
→ 还是同一个网段,但IP由DHCP服务器自动分配
→ 优点:IP分配自动,不容易冲突
→ 缺点:隔离性差,多租户场景不适用
模式3:vLAN(虚拟局域网)——生产环境标准配置 ⭐
→ 小区分成多个楼栋(vLAN),每个楼栋有独立网络
→ 楼栋之间不能直接互访(隔离)
→ 但楼栋内的住户可以互相通信
→ 住户要访问公网,通过统一的出口网关
→ 优点:完全隔离,适合多租户
→ 缺点:配置复杂,需要交换机支持vLAN
|
6.3 Neutron的核心概念:网络、子网、端口、路由器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
Neutron的四个核心概念:
1. 网络(Network)—— 一张虚拟的"网"
→ 可以理解为一个楼栋(vLAN)
→ 每个网络有独立的网络ID
→ 不同网络的云主机不能直接通信(除非通过路由器)
2. 子网(Subnet)—— 网络里的"门牌号段"
→ 例如:子网A = 192.168.1.0/24
→ 子网B = 10.0.0.0/24
→ 定义IP范围、网关、DNS服务器
3. 端口(Port)—— 云主机接入网络的"网线接口"
→ 每连接一个网络,就需要一个端口
→ 端口分配一个IP(从子网的地址池里取)
→ 端口可以绑定安全组(类似于防火墙规则)
4. 路由器(Router)—— 连接不同网络的"楼栋大门"
→ 网络A的子网,要访问网络B,必须经过路由器
→ 路由器还连接外部网络(Provider Network / 外部网络)
→ 云主机通过路由器访问公网
|
6.4 一次完整的网络配置实验
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
46
47
48
49
50
51
52
|
# 实验:在OpenStack中创建一台能上网的云主机
# 步骤1:创建外部网络(Provider Network,连接公网)
openstack network create --external \
--provider-network-type flat \
--provider-physical-network physnet1 \
ext-net
# 步骤2:在外部网络上创建子网(公网IP段)
openstack subnet create \
--network ext-net \
--subnet-range 202.96.209.0/24 \
--gateway 202.96.209.1 \
--allocation-pool start=202.96.209.100,end=202.96.209.200 \
--dhcp \
ext-subnet
# 步骤3:创建租户网络(内部网络)
openstack network create internal-net
# 步骤4:在租户网络创建子网(私有IP段)
openstack subnet create \
--network internal-net \
--subnet-range 192.168.10.0/24 \
--gateway 192.168.10.1 \
internal-subnet
# 步骤5:创建路由器(连接内部网络和外部网络)
openstack router create my-router
# 步骤6:把路由器的内部接口连接到租户网络
openstack router add subnet my-router internal-subnet
# 步骤7:把路由器的外部接口连接到外部网络
openstack router set --external-gateway ext-net my-router
# 步骤8:创建云主机,连接到租户网络
openstack server create \
--flavor m2.large \
--image Ubuntu-22.04 \
--network internal-net \
--key-name my-keypair \
my-vm
# 步骤9:创建浮动IP并绑定到云主机(实现公网访问)
openstack floating ip create ext-net
openstack server add floating ip my-vm <floating-ip-address>
# 结果:
# → 云主机在 192.168.10.x 网段(内部网络)
# → 通过路由器NAT转换访问公网(上网)
# → 绑定浮动IP后可以从公网SSH进来
|
第七章:Cinder——块存储服务,云主机的"硬盘"
7.1 为什么要独立的存储服务
前面Nova创建的云主机,有一个系统盘(类似电脑的C盘),但系统盘通常比较小(40GB),而且不建议存放重要数据。
Cinder的作用就是:给云主机挂载额外的云硬盘,容量和性能都可以按需扩展。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Cinder解决了什么问题:
场景:你的云主机系统盘只有40GB,但业务需要200GB的数据盘
不用Cinder:
→ 只能在创建云主机时就指定大硬盘
→ 硬盘大小不能动态调整
→ 重装系统数据全丢
用Cinder:
→ 可以随时创建一块200GB的云硬盘
→ 随时挂载到任何云主机
→ 随时扩容(从200GB扩到500GB)
→ 随时从云主机卸载
→ 云硬盘可以备份(快照),不怕数据丢失
|
7.2 Cinder的后端存储类型
Cinder支持多种存储后端,选择哪种取决于业务需求:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
Cinder存储后端对比:
后端1:LVM(逻辑卷管理)
→ 基于本地磁盘
→ 性能:★★★★★(最快,因为是本地磁盘)
→ 容量:受单台物理机磁盘限制
→ 可用性:单节点故障会导致数据丢失
→ 适用:测试环境、对性能要求极高的场景
后端2:NFS(网络文件系统)
→ 连接到专门的存储服务器(NFS Server)
→ 性能:★★★☆☆(通过网络,有延迟)
→ 容量:取决于NFS服务器容量
→ 可用性:高(存储服务器冗余)
→ 适用:需要共享存储的集群场景
后端3:Ceph RBD ⭐(生产环境最常用)
→ 分布式存储,3副本机制(数据同时存3份)
→ 性能:★★★★☆(高吞吐,低延迟)
→ 容量:可线性扩展(加机器就加空间)
→ 可用性:极高(任何一台机器故障,数据不丢失)
→ 适用:生产环境,高可用需求
|
7.3 Cinder的工作流程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
创建并挂载一块100GB云硬盘的过程:
用户请求:"帮我创建一块100GB的云硬盘,挂载到my-vm上"
↓
Cinder-api接收请求,验证身份和权限
↓
Cinder-scheduler选择最优存储节点
↓
选中的存储节点创建LVM卷(或Ceph RBD块设备)
↓
通过消息队列通知Nova-compute
↓
Nova-compute执行挂载操作
→ 在KVM中新增一个虚拟磁盘设备(/dev/vdb)
↓
云主机内部识别到新硬盘(/dev/vdb)
↓
用户登录云主机,执行分区和挂载:
fdisk /dev/vdb # 分区
mkfs.ext4 /dev/vdb1 # 格式化
mount /dev/vdb1 /data # 挂载到/data目录
↓
云硬盘使用成功!可以往/data目录写入数据了
|
第八章:Horizon——Web管理界面
8.1 Horizon是什么
Horizon是OpenStack官方的Web管理界面,类似于AWS的EC2管理控制台。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Horizon的主要功能:
左侧导航栏:
├─ 项目(Project) → 查看和管理自己的资源(云主机、网络、硬盘)
├─ 管理(Admin) → 管理员才能看到,管理所有租户、资源配额
├─ 身份(Identity)→ 管理员管理用户、角色、项目
└─ 运维(Operator)→ 系统状态监控(可选)
每个菜单下的操作:
→ 实例:创建/启动/停止/删除/控制台访问
→ 网络:创建网络、子网、路由器、浮动IP
→ 硬盘:创建/挂载/卸载/扩容云硬盘
→ 镜像:上传/下载/删除镜像
→ 安全组:配置防火墙规则
|
8.2 Horizon vs CLI vs API——三种管理方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
三种管理OpenStack的方式:
方式1:Horizon(Web界面)——最直观
→ 优点:可视化,点鼠标就能操作,适合初学者
→ 缺点:效率低,无法自动化,复杂操作不支持
方式2:OpenStack CLI(命令行)——最常用
→ 优点:效率高,可重复执行,适合DevOps
→ 缺点:需要记命令,错误提示不如界面直观
方式3:OpenStack API(编程接口)——最灵活
→ 优点:完全自动化,可以写程序调用
→ 缺点:需要开发能力
→ 实际生产环境:Ansible/Terraform调用OpenStack API
自动创建和管理整个基础设施(Infrastructure as Code)
|
第九章:生产环境部署架构——两节点起步
9.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
OpenStack最小生产架构:
┌─────────────────────────────────────────┐
│ 控制节点(Controller Node) │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 物理服务器(1台) │ │
│ │ │ │
│ │ Keystone(认证) ←──┐ │ │
│ │ Glance(镜像) ←──┤ │ │
│ │ Nova-API ←──┤ MySQL DB │ │
│ │ Neutron-server ←──┤ (数据库) │ │
│ │ Cinder-api ←──┤ │ │
│ │ Horizon ←──┘ │ │
│ │ Neutron-agent (网络插件) │ │
│ │ nova-compute (实验/小规模) │ │
│ │ RabbitMQ (消息队列) │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
↓ 管理网络
↓ 数据网络
↓ 存储网络
┌─────────────────────────────────────────┐
│ 计算节点(Compute Node 1~N) │
│ │
│ ┌─────────────────────────────────┐ │
│ │ 物理服务器(1台起) │ │
│ │ │ │
│ │ nova-compute (KVM虚拟机管理器)│ │
│ │ neutron-linuxbridge-agent │ │
│ │ │ │
│ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │
│ │ │ VM1 │ │ VM2 │ │ VM3 │ │ │
│ │ │ 租户A │ │ 租户A │ │ 租户B │ │ │
│ │ └──────┘ └──────┘ └──────┘ │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
↓ 存储网络
┌─────────────────────────────────────────┐
│ 存储节点(Cinder Storage) │
│ │
│ ┌─────────────────────────────────┐ │
│ │ Cinder-Volume(LVM/Ceph) │ │
│ │ 或者独立的Ceph集群 │ │
│ └─────────────────────────────────┘ │
└─────────────────────────────────────────┘
|
9.2 生产环境的资源规划建议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
OpenStack生产环境资源规划:
控制节点(建议2台,做高可用):
CPU:32核+
内存:64GB+
磁盘:500GB+(SSD,系统盘)
网络:万兆网卡(管理网+API网+数据网分离)
计算节点(按需扩展):
CPU:32核+(支持虚拟化VT-x/AMD-V)
内存:128GB+
磁盘:系统盘SSD 200GB+ + 数据盘(大容量)
网络:万兆网卡(虚拟机流量很大)
数量:起步3台,每台跑20-40台云主机
存储节点(Ceph集群,至少3台):
CPU:16核+
内存:64GB+
磁盘:多盘位(每台8-12块硬盘,混合HDD+SSD)
网络:万兆网卡(存储I/O密集)
|
总结: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
28
|
OpenStack学习路线图:
第1步:理解整体架构
→ OpenStack = 控制节点 + 计算节点 + 存储节点
→ 组件间通过消息队列(RabbitMQ)和API通信
→ Keystone是守门人,所有请求先认证
第2步:掌握核心5组件
→ Keystone:身份认证 + 租户管理
→ Glance:操作系统镜像仓库
→ Nova:云主机创建和调度
→ Neutron:虚拟网络(Flat/vLAN/路由器)
→ Cinder:云硬盘(块存储)
第3步:理解调度原理
→ nova-scheduler通过Filter + Weight选择最优节点
→ 考虑CPU/内存/可用域/亲和性等因素
第4步:理解网络模型
→ 外部网络(Provider)连接公网
→ 租户网络(Tenant)实现多租户隔离
→ 路由器连接内外网络
→ 浮动IP实现从公网访问云主机
第5步:实战部署
→ 两节点部署(控制节点+计算节点)
→ 用OpenStack Ansible或Kolla-Ansible自动化部署
→ 用Terraform管理基础设施(IaC)
|
关联文章:
- 《企业网络路由协议选型与核心技术指南》——Neutron网络在底层依赖的网络知识
- 《华为VRP系统命令行完全指南》——云计算平台运维人员的网络基础