OpenStack 是什么:一张图看懂在干什么
前置:本地学习:用 DevStack 安装 OpenStack 目标:用一张图把「谁负责什么」记清楚,后面学 Keystone / Nova / Neutron 时不迷路。
引言
装完 DevStack,Dashboard 里菜单很多:计算、网络、存储、身份......一眼看不出谁管谁。
这一篇不讲安装,只讲心智模型:OpenStack 是一组互相调用的服务;你点「创建实例」,背后会串起身份、镜像、网络、计算(以及可选的块存储)。
一张图:请求怎么走
把 OpenStack 想成「云操作系统的控制面」:你不直接碰 libvirt / OVS,而是通过 API(或 Horizon)发请求,由各组件协同落地。

读图要点:
- Keystone 永远在前:没 Token / 项目作用域不对,后面全空或 401。
- Nova 是编排者:创建实例时它会找 Glance 要镜像、找 Neutron 要网、可选找 Cinder 要卷。图里这三项画在 Nova 上面,不是请求先打到它们。
- Horizon 不是核心:只会调 API;运维排障最终要落到 CLI / 服务日志。
核心组件速查
| 组件 | 一句话 | 你平时接触到的 |
|---|---|---|
| Keystone | 身份与权限 | 用户、项目、角色、Token、Endpoint |
| Glance | 镜像仓库 | cirros / Ubuntu 镜像列表 |
| Nova | 计算 | 实例、Flavor、控制台、调度 |
| Neutron | 网络 | 网络、子网、路由、Floating IP、安全组 |
| Cinder | 块存储 | 卷、挂载、启动盘 |
| Horizon | 控制台 | Dashboard 页面 |
DevStack 默认还会起消息队列、数据库、Placement 等;学习阶段先记住上表即可。
Horizon 左侧菜单对应谁
用 admin 登录后,左侧是三栏。「项目」只看当前项目;「管理员」和「身份管理」在下面,demo 看不到。截图展开的是「项目」。
| 左侧菜单 | 组件 | 你想核对时用的 CLI |
|---|---|---|
| 项目 → 访问 API | Horizon | openstack endpoint list(页面只是把 endpoint 列出来) |
| 项目 → 计算 → 实例 / 密钥对 / 主机组 | Nova | openstack server list |
| 项目 → 计算 → 镜像 | Glance | openstack image list(菜单挂在「计算」下,服务不是 Nova) |
| 项目 → 卷 | Cinder | openstack volume list |
| 项目 → 网络 | Neutron | openstack network list |
| 管理员 → 计算 → 虚拟机管理器 | Nova | openstack hypervisor list |
| 管理员 → 计算 → 实例类型 / 镜像 | Nova / Glance | Flavor 与全局镜像 |
| 管理员 → 卷 / 网络 | Cinder / Neutron | 跨项目的卷类型、网络、浮动 IP |
| 管理员 → 系统 → 系统信息 | 各服务 | 服务是否 up;openstack compute service list 看的是这一层 |
| 身份管理 | Keystone | openstack project list / openstack user list |

「创建一台虚机」背后发生了什么
用用户故事串起来(下一篇会亲手做):
- 用
admin/demo登录 → Keystone 发 Token,绑定到某个项目。 - 选镜像 → 读 Glance。
- 选网络 / 安全组 → 调 Neutron(端口、DHCP、安全组规则)。
- 选 Flavor、点创建 → Nova 调度到计算节点,拉镜像、起 guest。
- (可选)挂云盘 → Cinder 建卷再 attach。
DevStack 里「谁」和「项目」
安装成功后先记住两个账号:
| 用户 | 典型用途 |
|---|---|
admin |
管理员;可看全局、改配额、管服务 |
demo |
普通租户用户;只看到自己项目里的资源 |
项目(Project / 旧称 Tenant) 是资源隔离边界:实例、网络、卷通常挂在某个项目下。 同一用户换项目后,「列表是空的」很常见------不是删了,是作用域不对。后面 Keystone 篇会细讲。
multipass shell 进来是 ubuntu,~/devstack 在 stack 家目录。openrc 后面两个词是「用户 项目」。
bash
sudo -u stack -i
source ~/devstack/openrc admin admin
openstack project list
openstack user list
openstack service list
openstack endpoint list

列表里除了 admin / demo,还有 service、alt_demo,以及 nova、glance 这类服务账号。placement、nova_legacy 先不用记。invisible_to_admin 是 DevStack 自带项目,不是创建失败留下的。这台环境的 endpoint 目前只有 public。
和「虚拟机软件」差在哪
| VirtualBox / VMware 本机 | OpenStack | |
|---|---|---|
| 对象 | 你本机上的几台 VM | 多租户可申请的计算/网络/存储 |
| 入口 | 图形客户端 | API + 可选 Horizon |
| 网络 | NAT / 桥接点几下 | 租户网、路由、Floating IP、安全组 |
| 权限 | 基本就是本机用户 | 项目 + 角色 + 配额 |
| 定位 | 桌面虚拟化 | 私有云 / IaaS 控制面 |
学 OpenStack,学的是云资源怎么被申请、隔离、计量和排障,不是再学一遍装 Guest OS。
本系列怎么读
| 阶段 | 你要达成 |
|---|---|
| A 动手 | 传镜像、开虚机、配网、挂盘、能 SSH |
| B 运维 | CLI 巡检、跟日志、处理 ERROR / 不通 / 鉴权 |
| C 衔接生产 | 知道 DevStack 边界;多节点、变更回滚有直觉 |
下一篇:创建第一台实例:Horizon ↔ CLI------把这张图变成一次可复现的操作。
小结
- OpenStack = 多个服务协作;Keystone 鉴权,Nova 编排,Glance / Neutron / Cinder 各管一摊。
- Horizon 只是壳;排障请习惯 CLI + 日志。
- 资源挂在项目下;作用域错了会「什么都没有」。