OpenStack 技术指南:从入门到精通
目录
- 什么是 OpenStack?
- 定义与核心理念
- OpenStack 的应用场景
- 为什么选择 OpenStack?(优势与挑战)
- OpenStack 核心架构
- 架构设计原则
- 核心服务(组件)概览
- 典型部署架构
- 核心服务详解
- 计算: Nova
- 网络: Neutron
- 对象存储: Swift
- 块存储: Cinder
- 身份认证: Keystone
- 镜像服务: Glance
- 仪表盘: Horizon
- 编排: Heat
- 测量: Ceilometer
- OpenStack 部署
- 部署工具简介
- 部署流程概述
- 环境准备
- OpenStack 使用指南
- 通过 Horizon (Web UI) 使用
- 通过 OpenStack CLI (命令行) 使用
- 通过 OpenStack SDK (API) 使用
- 高级主题
- 高可用性
- 多租户与安全
- 软件定义网络
- 容器与 OpenStack (Magnum, Zun)
- OpenStack 与 Kubernetes 的集成
- 运维与监控
- 日志管理
- 性能监控
- 故障排查思路
- 学习资源与社区
- 官方文档
- 书籍推荐
- 社区与会议
- 总结与展望
什么是 OpenStack?
定义与核心理念
OpenStack 是一个开源的云计算管理平台,它由一系列相互协作的开源项目组成,其目标是提供基础设施即服务,允许企业或服务提供商在标准化的硬件上构建和运行大规模的公有云或私有云。

核心理念:
- 开源: 整个项目由社区驱动,代码公开透明,任何人都可以贡献代码和使用。
- 模块化: 由多个独立的项目(服务)组成,每个项目负责一个特定的功能领域(计算、网络、存储等),可以独立部署和升级。
- 可扩展: 架构设计支持从几十个节点到数千个节点的超大规模部署。
- 开放标准: 遵循行业标准,通过 REST API 提供服务,易于与其他系统集成。
OpenStack 的应用场景
- 私有云: 企业构建自己的私有云,对数据安全、合规性和成本有严格要求。
- 公有云: 服务提供商(如 Rackspace, OVH)构建公有云服务。
- 混合云: 将私有云与公有云(如 AWS, Azure)无缝连接,实现资源灵活调度。
- 边缘计算: 在靠近数据源的地方部署轻量级 OpenStack 环境,降低延迟。
- 研究和高性能计算: 为科研项目和 HPC 场景提供灵活、弹性的计算资源。
为什么选择 OpenStack?(优势与挑战)
优势:
- 避免厂商锁定: 基于开源技术,不依赖单一供应商。
- 灵活性高: 可根据业务需求定制和扩展。
- 成本可控: 可选择自己采购硬件,长期成本较低。
- 强大的生态系统: 拥有庞大的社区和商业支持(如 Red Hat, Mirantis)。
挑战:
- 部署复杂: 组件众多,配置复杂,对运维人员要求高。
- 学习曲线陡峭: 需要投入大量时间和精力学习。
- 运维成本高: 需要专业的团队进行日常运维和故障处理。
OpenStack 核心架构
架构设计原则
OpenStack 通常采用分布式架构,各个服务通过网络进行通信,为了安全和管理,通常会划分不同的网络区域(如管理网络、数据网络、API 网络)。

核心服务(组件)概览
OpenStack 由多个核心项目(服务)组成,每个服务负责一个关键功能,它们通过统一的 Keystone 服务进行身份认证和授权。
| 服务名称 | 功能 | API 名称 | 通俗比喻 |
|---|---|---|---|
| Keystone | 身份认证、服务目录、令牌管理 | /v3 |
“大堂经理” - 负责验证你的身份,告诉你有哪些服务可用。 |
| Nova | 虚拟机生命周期管理 | /v2.1 |
“计算引擎” - 负责创建、启动、停止、删除虚拟机。 |
| Neutron | 虚拟网络管理 | /v2.0 |
“网络工程师” - 负责创建虚拟路由器、交换机、防火墙和安全组。 |
| Glance | 镜像管理 | /v2 |
“光盘库” - 存储和管理虚拟机启动所需的磁盘镜像。 |
| Cinder | 块存储管理 | /v2 |
“移动硬盘” - 为虚拟机提供持久化的块存储设备(硬盘)。 |
| Swift | 对象存储 | /v1 |
“云硬盘” - 存储海量非结构化数据(如图片、视频、备份文件)。 |
| Horizon | Web 用户界面 | (Web UI) | “前台接待” - 提供一个图形界面,让你能方便地管理所有云资源。 |
| Heat | 应用编排服务 | /v1 |
“建筑师” - 通过模板(如 HOT, YAML)自动化部署复杂的应用栈。 |
| Ceilometer | 监控与计量 | /v2 |
“监控员” - 收集资源使用数据,用于计费、监控和告警。 |
典型部署架构
一个典型的 OpenStack 部署包含以下几种角色(可以部署在同一台物理机上,也可以分布在多台物理机上):
- 控制节点: 运行核心管理服务,如 Keystone, Nova, Neutron, Glance, Horizon 等,通常需要高可用配置。
- 计算节点: 运行 Nova-compute 服务,负责运行虚拟机,节点上运行 Hypervisor(如 KVM, VMware)。
- 网络节点: 运行 Neutron 的 L2/L3 代理,负责处理虚拟网络流量,在较新的版本中,此角色功能常融合到控制节点或计算节点。
- 存储节点: 运行 Swift 或 Cinder 服务,提供存储资源。
核心服务详解
计算: Nova
Nova 是 OpenStack 的核心计算服务,管理整个云环境的计算资源池。
- 架构: 采用消息队列(如 RabbitMQ)作为不同组件之间的通信总线,主要组件包括:
- API Server (
nova-api): 接收外部请求(CLI, Horizon, API)。 - Scheduler (
nova-scheduler): 根据调度算法(如 CPU、内存、磁盘)选择最合适的计算节点来创建虚拟机。 - Compute (
nova-compute): 在计算节点上实际执行虚拟机的创建、销毁等操作。 - Conductor (
nova-conductor): 为其他组件提供数据库访问代理,避免直接访问数据库。
- API Server (
- 关键概念:
- Flavor(规格): 定义虚拟机的 CPU、内存、磁盘大小等配置模板。
- Instance(实例): 即运行的虚拟机。
- Hypervisor: 虚拟机监控程序,如 KVM, VMware, Xen。
网络: Neutron
Neutron 负责为虚拟机提供网络连接,支持丰富的网络功能。

- 架构: 采用插件 架构,以支持不同的网络技术(如 Open vSwitch, Linux Bridge, VMware NSX)。
- 关键组件:
- API Server (
neutron-server): 处理网络 API 请求。 - Plugin Agent: 在每个计算节点上运行,负责实现本地的网络功能(如创建虚拟交换机)。
- L3 Agent: 实现虚拟路由器功能。
- DHCP Agent: 为虚拟机提供 DHCP 服务。
- Metadata Agent: 为虚拟机提供元数据服务。
- API Server (
- 关键概念:
- Network(网络): 一个二层隔离的网络。
- Subnet(子网): 网络中的一个 IP 地址段。
- Router(路由器):
