云原生分布式存储集成工程 - 第1节

1. Longhorn概述

Longhorn 是由 Rancher Labs(现为 SUSE 旗下)于 2017 年开源的云原生分布式块存储系统,2019 年成为 CNCF 沙箱项目,2020 年晋升为 CNCF 毕业项目。它专为 Kubernetes 环境设计,以轻量级、易运维、无外部依赖为核心理念,解决了传统存储方案在 Kubernetes 上部署复杂、运维成本高的问题。

关键里程碑: 2020 年 CNCF 毕业 → 2022 年 v1.3 支持 RWX 与备份锁 → 2024 年 v1.7 引入 v2 数据引擎(SPDK 加速)。

1.2 核心特性

特性 说明
Kubernetes 原生 通过 CSI 驱动、CRD 与 Operator 深度集成,PV/PVC 声明式管理
无外部依赖 仅依赖 Kubernetes 与 iSCSI/SPDK,无需 Ceph MON、GlusterFS 卷管理服务
内置高可用 卷自动跨节点副本(默认 3 副本),故障秒级切换
增量快照与备份 基于 COW 的卷快照,支持备份到 S3/NFS/本地路径
精简配置 按需分配物理空间,支持卷扩容与缩容
灾备与迁移 跨集群备份恢复、卷克隆、DR 卷(灾难恢复卷)
观测性 内置 Web UI、Prometheus Metrics、事件审计

1.3 与传统存储对比

维度 Longhorn Ceph (RBD) GlusterFS
架构复杂度 低:无独立元数据服务,控制平面嵌入 Kubernetes 高:需部署 MON、OSD、MGR、MDS 等多组件 中:需部署 Brick、卷管理服务
运维门槛 低:Helm 一键部署,UI 管理 高:需专业 Ceph 管理员调优 中:需处理裂脑与卷修复
性能 中高:v1 引擎 iSCSI 延迟约 1ms,v2 引擎 SPDK 可降至 200μs 高:RBD 直连延迟低,但重均衡时抖动 中:FUSE 挂载性能损耗约 20-30%
扩展性 中:单集群推荐 100 节点以内 高:支持数千节点 中:受限于卷分布算法
数据一致性 强一致性(同步副本写入) 强一致性(PG 主从同步) 最终一致性(AFR 自动文件复制)
Kubernetes 集成 原生 CSI + CRD,无需额外适配 需部署 ceph-csi 或 rook 需部署 glusterfs-csi 或 heketi
选型建议: 中小规模 Kubernetes 集群(< 100 节点)优先选择 Longhorn;大规模或已有 Ceph 基础设施的场景继续使用 Ceph;GlusterFS 已逐步被 Red Hat 弃用,不建议新项目采用。

1.4 适用场景

  • 有状态应用容器化: 数据库(PostgreSQL、MySQL)、消息队列(Kafka、RabbitMQ)、缓存(Redis)
  • DevOps 与 CI/CD: Jenkins 构建缓存、GitLab Runner 数据持久化
  • 边缘计算: 轻量级部署,适合资源受限的边缘节点
  • 灾备与迁移: 跨集群备份恢复、卷克隆、DR 卷
  • 开发测试环境: 快速搭建、按需销毁,无需存储管理员介入

1.5 Longhorn 整体架构

下图展示了 Longhorn 的核心组件与数据流关系:

Longhorn 整体架构图 Longhorn 整体架构 Kubernetes 集群 控制平面 Longhorn Manager (Deployment) CSI Driver (DaemonSet) UI (Deployment) CRD: Volume/Engine/Replica Backup Store (S3/NFS) 数据平面 Longhorn Engine (iSCSI/SPDK) Replica 1 (本地磁盘) Replica 2 (远程节点) Replica 3 (远程节点) 快照层 (COW) 控制指令 工作负载 (Pod) 通过 CSI 挂载 Longhorn 卷 节点 A (副本1) 节点 B (副本2) 节点 C (副本3) v2 引擎可选 SPDK 加速

1.6 控制平面与数据平面分离

Longhorn 采用控制平面与数据平面分离的架构设计:

  • 控制平面: Longhorn Manager 以 Deployment 形式运行,负责 CRD 管理、调度、备份、UI 展示。所有控制指令通过 Kubernetes API 下发。
  • 数据平面: Longhorn Engine 以 DaemonSet 形式运行在每个节点,负责处理 I/O 请求、副本同步、快照管理。Engine 与 Replica 之间通过 gRPC 通信。
故障排查要点: 控制平面故障通常表现为卷无法创建、备份失败、UI 不可用;数据平面故障表现为 I/O 超时、副本重建失败、卷挂载异常。排查时需先区分故障层面。

1.7 数据写入流程

下图展示了 Longhorn 卷的一次完整写入路径:

Longhorn 数据写入流程 Longhorn 数据写入流程 1. 应用写入 Pod → 块设备 2. Engine 接收 iSCSI/SPDK 入口 3. 并行写入 所有副本 4. 确认返回 全部 ACK Replica A (本地) Replica B (远程) Replica C (远程) 写入策略:所有副本同步写入,全部成功后返回 ACK 若任一副本失败,Engine 标记该副本为故障并触发重建
性能优化提示: 副本数越多,写入延迟越高(需等待所有副本 ACK)。生产环境建议 2-3 副本,并开启快速重建(Fast Rebuild)以减少故障恢复时间。