1. 整体架构设计
Longhorn 采用了分层架构设计,主要分为数据平面和控制平面两个层次:
1.1 数据平面与控制平面
数据平面:由 Longhorn Engine 实现,负责数据存储、复制和同步。数据平面直接处理 I/O 操作,确保数据的可靠性和一致性。
控制平面:由 Longhorn Manager 实现,负责资源编排、生命周期管理和与 Kubernetes 的集成。控制平面处理管理操作,如卷创建、快照、备份等。
这种分层设计使 Longhorn 能够将数据操作与管理操作分离,提高系统的可靠性和可维护性。
1.2 微服务架构
Longhorn 采用微服务架构,为每个卷创建独立的存储控制器(Longhorn Engine)。这种设计有以下优势:
- 故障隔离:单个卷的故障不会影响其他卷的运行
- 资源隔离:每个卷可以独立分配和管理资源
- 灵活升级:可以单独升级特定卷的控制器,不影响其他卷
- 简化设计:每个控制器只需关注单个卷的管理,降低复杂性
1.3 基于 Kubernetes 的编排
Longhorn 充分利用 Kubernetes 的编排能力,将存储控制器和副本作为 Kubernetes 资源进行管理。这种设计使 Longhorn 能够:
- 利用 Kubernetes 的调度能力分布副本
- 利用 Kubernetes 的自愈能力处理节点故障
- 通过 Kubernetes API 提供一致的管理接口
- 与 Kubernetes 生态系统无缝集成
2. 核心组件工作原理
2.1 Longhorn Manager
Longhorn Manager 是 Longhorn 的控制平面,作为 DaemonSet 在集群的每个节点上运行。其主要职责包括:
- 卷生命周期管理:创建、删除、挂载和卸载卷
- 引擎实例管理:创建和管理 Longhorn Engine 实例
- 副本调度:在不同节点上创建和管理卷的副本
- API 服务:提供 REST API 接口,供 UI 和 CSI 驱动使用
- 状态监控:监控卷、引擎和副本的状态,并进行必要的恢复操作
Longhorn Manager 遵循 Kubernetes 控制器模式(也称为操作器模式),通过监听 Kubernetes API 服务器中的自定义资源(CR)变化来触发相应的操作。
当用户请求创建卷时ÿ