什么是 OpenStack
OpenStack 是一套开源的 IaaS(基础设施即服务) 云平台软件,用于在数据中心内统一管理计算、存储、网络等资源,并通过 REST API 和 Web 控制台对外提供自助式云服务。
典型使用场景:
- 私有云 / 混合云建设
- 开发测试环境快速交付虚拟机
- 多租户资源隔离与配额管理
- 与上层 PaaS、容器平台(如 Kubernetes)集成
架构模型
本文档对应的实验环境采用 双节点架构:
| 节点 | 主机名 | 管理网 IP | 角色 |
|---|---|---|---|
| 控制节点 | controller | 11.0.1.30 | API、数据库、消息队列、调度、网络控制面 |
| 计算节点 | compute | 11.0.1.40 | 虚拟机运行、Neutron Agent、块存储/对象存储后端 |
每台虚拟机配置 双网卡:
| 网卡 | VMware 连接 | 用途 |
|---|---|---|
| ens33 | NAT(VMnet8) | 管理网:节点通信、API、软件源 |
| ens34 | 仅主机(VMnet1) | Provider 网:Neutron 外部网络桥接,不配置 IP |
核心组件(基础组件)
基础组件构成最小可用的 IaaS 平台,按依赖顺序部署:
| 组件 | 作用 | 默认端口 |
|---|---|---|
| MariaDB | 各服务持久化数据存储 | 3306 |
| RabbitMQ | 服务间异步消息通信 | 5672 |
| Memcached | Token 与会话缓存 | 11211 |
| Etcd | 分布式键值存储(扩展组件依赖) | 2379 |
| Keystone | 身份认证、服务目录、Token 签发 | 5000 |
| Glance | 镜像注册与存储 | 9292 |
| Placement | 资源库存与调度(Nova 依赖) | 8778 |
| Nova | 计算服务:虚拟机生命周期管理 | 8774 |
| Neutron | 网络服务:虚拟网络、路由、安全组 | 9696 |
| Horizon | Web 管理控制台(Dashboard) | 80/dashboard |
组件协作关系
用户/CLI ──► Keystone(认证)──► 各服务 API │ ▼ MariaDB / RabbitMQ / Memcached │ ┌───────────┼───────────┐ ▼ ▼ ▼ Nova Neutron Glance(计算) (网络) (镜像) │ │ └──── Placement ────┘扩展组件
在核心平台就绪后,可按需选装:
| 组件 | 作用 | 说明 |
|---|---|---|
| Cinder | 块存储 | 为云主机提供可挂载的持久化磁盘卷 |
| Swift | 对象存储 | 大文件、静态资源、备份归档 |
| Heat | 编排服务 | 通过模板自动化创建资源栈 |
| Manila | 共享文件系统 | NFS 等共享存储 |
| Ceilometer | 计量服务 | 资源使用量采集 |
| Trove | 数据库服务 | DBaaS |
| Octavia | 负载均衡 | LBaaS |
| Barbican | 密钥管理 | 证书与密钥托管 |
本文档系列重点覆盖 Cinder、Swift、Heat 三个常用扩展组件的部署步骤。
版本与操作系统
| 项目 | 版本 |
|---|---|
| OpenStack | Train |
| 操作系统 | CentOS 7.9 |
| 虚拟化 | KVM(libvirt) |
| 网络插件 | ML2 + Linux Bridge |
部署原则
- 按序部署:每完成一个组件并验收通过后,再部署下一个。
- 控制节点优先:数据库、Keystone 及多数 API 服务仅在控制节点安装。
- 先控制面后数据面:如 Nova、Neutron、Cinder 均先在控制节点装 API/调度,再在计算节点装 Agent/Volume。
- 密码统一:实验环境默认密码为
000000,生产环境须修改。 - 网络先行:Neutron 就绪后才能创建云主机;外部网络在核心服务全部部署后单独创建。