一、OpenStack 对象存储 ------ Swift
1.1 Swift 在 OpenStack 中的作用
- Swift 不是文件系统,也不是实时的数据存储系统 ,而是对象存储 ,面向永久类型静态数据的长期存储,这些数据可以被检索、调整,必要时进行更新。
- 最适合存储的数据类型:虚拟机镜像、图片存储、邮件存储、存档备份。
- 因为没有中心单元或主控节点,Swift 提供了更强的扩展性 与高可用性:通过数据复制(replica)机制在多个存储节点间冗余保存对象,任一节点故障不会导致数据丢失。
- 在 OpenStack 中,Swift 常作为 Glance 镜像服务的后端存储(讲义中演示了"使用 swift 作为 Glance 后端存储")。
1.2 核心概念
| 概念 | 说明 |
|---|---|
| Account(账户) | 顶层容器,对应一个 Project / 用户,下含若干 Container |
| Container(容器) | 对象的命名空间集合,用于组织对象(类似"目录",但不可嵌套) |
| Object(对象) | 实际存储的数据单元(数据 + 元数据 + 唯一标识) |
| Ring | 描述"分区(Partition)如何映射到物理磁盘设备"的逻辑映射表,是 Swift 的数据分布核心 |
| Partition(分区) | 数据分布的基本单位,对象先 Hash 到分区,再由 Ring 映射到具体设备 |
| Replica(副本) | 每个对象/分区的冗余份数,默认 3 副本 |
1.3 关键架构特点
- 去中心化:无单点主控,元数据与数据平权分布。
- 数据分布算法:通过 Hash Ring 将对象定位到 Partition,再由 Ring 定位到 Device。
- 可扩展:横向增加存储节点即可扩容。
- 高可靠:依赖副本 + 后台 Region/Rebalance 机制保持数据均衡与自愈。
1.4 Swift 学习小结
- 记牢 Account / Container / Object 三层结构 与 Ring + Partition + Replica 的数据分布模型。
- 理解 Swift 适用于"一次写入、多次读取、长期保存"的静态大对象场景。
- 实验重点是 磁盘挂载 → 权限 → 建 Ring → Rebalance 这条主线。
二、OpenStack 编排管理 ------ Heat
2.1 Heat 的作用
- Heat 是一种通过 OpenStack 原生 REST API、使用声明性模板格式编排复合云应用程序的服务,并提供与其他 OpenStack 核心项目的紧密集成。
- Heat 模板以文本文件 形式描述云应用的基础架构,文件可供用户读写,并支持通过版本控制工具进行管理。
- 用户无需直接接触 Nova、Neutron 等服务,只需把对各种资源的需求写进 Heat 模板,Heat 就会自动调用相关服务接口来创建、配置资源。
2.2 Heat 与其他服务的关系
- Heat 是位于 Nova、Neutron 等服务之上的一个组件,充当 OpenStack 对外编排接口的角色。
- 一次"堆栈(Stack)"的创建,可同时拉起虚拟机、网络、子网、安全组、浮动 IP、卷等多种资源,实现基础设施即代码(IaC)。
2.3 Heat 架构与组件
| 组件 | 职责 |
|---|---|
| heat-api | 提供 REST API 服务,是其他组件与 Heat 交互的入口,接收 API 请求并传送给 heat-engine |
| heat-api-cfn | 提供兼容 AWS CloudFormation 的 API,接收请求并转发给 heat-engine |
| heat-engine | Heat 的核心,负责任务调度、资源生命周期管理,向下调用各 OpenStack 服务实际创建资源 |
2.4 Heat 模板
- 默认编写语言:YAML 语法(YAML Ain't Markup Language)。
- YAML 要点:
- 使用缩进(一个或多个空格)排版;
- 序列项 用短划线
-表示; - MAP 中的 key-value 对用冒号
:表示。
- 常见 HOT(Heat Orchestration Template)结构分段:
heat_template_version、description、parameters、resources、outputs。
2.5 Heat 学习小结
- 核心理念:声明式 / 基础设施即代码,把一组资源写进一个 YAML 模板,一键编排。
- 记牢三大组件:heat-api / heat-api-cfn / heat-engine,其中 engine 是真正干活的。
- 实验重点是理解 parameters → resources → outputs 的模板结构与资源间的
get_resource引用关系。
三、OpenStack 网络管理 ------ Neutron
3.1 Neutron 的定位
- Neutron 设计目标:网络即服务(Networking as a Service, NaaS)。
- 遵循基于 SDN 实现网络虚拟化的原则,充分利用 Linux 系统上的各种网络技术。
- 核心工作 是对二层物理网络的抽象与虚拟化,为实例提供虚拟网络能力。
3.2 物理网络 vs 虚拟网络
| 物理 | 虚拟 | 说明 |
|---|---|---|
| Switch | vSwitch | 物理交换机 / 虚拟交换机 |
| NIC | vNIC | 物理网卡 / 虚拟网卡 |
- vSwitch 常见软件:linuxbridge、ovs(Open vSwitch)、ovn。
3.3 Linux 网卡虚拟化基础(TAP / TUN / VETH)
- TAP 设备 :模拟二层网络设备,可收发二层网包。
- TUN 设备 :模拟三层网络设备,可收发三层网包。
- VETH:虚拟 ethernet 接口,通常**成对(pair)**出现,一端发出的网包被另一端接收,可形成两个网桥之间的通道。
3.4 虚拟交换机:Linux Bridge 与 OVS
-
Linux Bridge :工作于二层的网络设备,功能类似物理交换机;可绑定其他网络设备并虚拟化为端口。
bashbrctl addbr BRIDGE # 创建网桥更适用于小规模、主机内部间通信场景。
-
Open vSwitch (OVS) :产品级虚拟交换机,更适合大规模、多主机间通信 场景(华为 FusionCompute 的 DVS 即基于 EVS,EVS 基于 OVS)。
bashovs-vsctl add-br BRIDGE # 创建虚拟交换机
3.5 Neutron 网络类型
| 类型 | 说明 |
|---|---|
| local | 与其他网络、节点隔离;同一节点同一网络内的实例才能通信,主要用于单机测试 |
| flat | 无 VLAN tagging 的网络;同一网络的实例可跨多节点通信 |
| (vlan) | 基于 VLAN 标签隔离,是生产环境常用的多租户隔离方式 |
| (vxlan/gre) | Overlay 网络,跨节点用隧道封装 |
Subnet / CIDR 重叠规则 :同一 network 下不同 subnet 的 CIDR 不允许重叠 (看的是 CIDR 而非单个 IP 是否重叠);但不同 network 之间的 subnet,其 CIDR 和 IP 都可以重叠。
3.6 Neutron 组件
| 组件 | 职责 |
|---|---|
| Neutron Server | 对外提供网络 API,接收请求并调用 Plugin 处理 |
| Plugin | 处理 Server 发来的请求,维护 OpenStack 逻辑网络状态,并调用 Agent 处理 |
| Agent | 处理 Plugin 的请求,负责在计算/网络节点上落实具体的网络配置(如 OVS/LBFW/DHCP/Metadata Agent) |
- Neutron 的元数据(网络、子网、端口、路由、浮动 IP 等)保存在数据库
neutron库中(如networks、subnets、ports、ipallocations、routers等表)。
3.7 Neutron 学习小结
- 抓住 "网络即服务 + SDN 抽象二层网络" 这条主线。
- 记牢三类底层技术:TAP/TUN/VETH、Linux Bridge、OVS/OVN 的分工与适用场景。
- 记牢 Server / Plugin / Agent 三层组件,以及网络类型 local / flat / vlan / vxlan 的隔离差异。
- 实验重点是 OVN:外网---内网---路由器---实例 的连通链路及
ovn-nbctl show观察 logical switch / router / 绑定。
四、三大服务对照速记
| 维度 | Swift(对象存储) | Heat(编排管理) | Neutron(网络管理) |
|---|---|---|---|
| 一句话定位 | 静态大对象的长期存储 | 声明式模板编排云应用 | 网络即服务、二层网络虚拟化 |
| 核心结构 | Account/Container/Object + Ring | parameters/resources/outputs | Server/Plugin/Agent |
| 关键组件 | Ring/Partition/Replica | heat-api / heat-api-cfn / heat-engine | ML2 + OVN/OVS,DHCP/LBFW/Metadata Agent |
| 典型场景 | 镜像、图片、备份归档 | 一键拉起 VM+网络+安全组 | 多租户网络、浮动 IP、SNAT |
| 实验主线 | 挂盘→建 Ring→Rebalance | 写 HOT→建堆栈 | 外网→内网→路由器→实例(OVN) |