创建 Stretch 类型集群

Stretch 集群可以跨越两个地理位置不同的站点,提供存储基础设施的灾难恢复能力。当两个可用区中的一个完全不可用时,Ceph 仍能保持可用性。

⚠️ 重要提示:Alpha 功能声明

本文档描述的功能目前处于Alpha 阶段,仅供早期技术验证和评估。作为功能提供方,我们不对其稳定性、可靠性或数据完整性提供任何保证。通过配置和使用该功能,您即表示接受以下技术限制:

  • 非生产环境使用:该功能缺乏全面的系统级验证,在生产环境中部署存在较高的流程失败或数据损坏风险。
  • 无 SLA 保证:该功能不在标准服务等级协议(SLA)范围内,不保证技术支持响应时间,也不提供紧急热修复。
  • 破坏性变更及废弃风险:API 接口、配置结构和核心处理逻辑未来版本可能发生不兼容变更,且该功能可能会被完全废弃,且无提前通知。
  • 无平滑升级路径:不提供版本间升级脚本或数据迁移工具,升级通常需要彻底清理现有资源并重新部署,任何状态或数据丢失均由用户自行承担。

术语

术语说明
Quorum 可用区通常位于不承担主业务负载的独立可用区,专注于维护集群一致性,主要用于在主数据中心故障或网络分区时进行仲裁决策。
数据可用区Ceph 集群中实际存储和处理数据的主要区域,承担业务负载和数据存储任务,与仲裁区共同构成完整的高可用存储系统。

典型部署方案

以下内容提供了 Stretch 集群的典型部署方案,以及组件说明和灾难恢复原理。

组件说明

节点需分布在三个可用区,包括两个数据可用区和一个仲裁可用区。

  • 两个数据可用区均需完整部署所有核心 Ceph 组件(MON、OSD、MGR、MDS、RGW),且每个数据可用区必须配置两个 MON 实例以实现高可用。当同一数据可用区内的两个 MON 实例均不可用时,系统判定该可用区处于故障状态。

  • 仲裁可用区仅需部署一个 MON 实例,作为仲裁决策节点。

灾难恢复说明

  • 当某个数据可用区完全故障时,Ceph 集群会自动进入降级状态并触发告警通知。系统会将存储池的最小副本数(min_size)从默认的 2 调整为 1。由于另一个数据可用区仍保持双副本,集群保持可用。当故障数据可用区恢复后,系统会自动执行数据同步并恢复健康状态;若故障无法修复,建议替换为新的数据可用区。

  • 当两个数据可用区之间的网络连接中断,但它们仍能正常连接仲裁可用区时,仲裁可用区会根据预设策略对两个数据可用区进行仲裁,选择状态较好的数据可用区继续作为主数据区提供服务。

约束与限制

  • 存储池限制:不支持纠删码存储池,仅支持副本机制进行数据保护。

  • 设备分类限制:不支持设备分类功能,无法基于设备特性进行存储分层。

  • 区域部署限制:仅支持两个数据可用区,不允许超过两个数据可用区。

  • 数据均衡要求:两个数据可用区的 OSD 权重必须严格保持一致,以确保数据分布均衡。

  • 存储介质要求:仅允许全闪存(All-Flash)OSD 配置,最大限度缩短连接恢复后的恢复时间,尽可能减少数据丢失风险。

  • 网络延迟要求:两个数据可用区间的 RTT(往返时延)不得超过 10ms,仲裁可用区必须满足 ETCD 规范的延迟要求,以保证仲裁机制的可靠性。

前提条件

请提前将集群中全部或部分节点划分为三个可用区,具体如下:

  • 确保至少 5 个节点分布在一个仲裁可用区和两个数据可用区中,其中仲裁可用区至少包含一个节点,该节点可以是虚拟机或云主机。

  • 确保三个可用区中至少有一个包含 Master 节点(控制节点)。

  • 确保至少 4 个计算节点均匀分布在两个数据可用区,每个数据可用区至少配置 2 个计算节点。

  • 尽量保证两个数据可用区的节点数量和磁盘配置保持一致。

操作步骤

标记节点

  1. 进入 管理员。

  2. 在左侧导航栏点击 集群管理 > 集群。

  3. 点击对应集群名称,进入集群概览页面。

  4. 切换到 节点 标签页。

  5. 根据前提条件规划,为这些节点添加 topology.kubernetes.io/zone=<zone> 标签,将其划分到指定的可用区。此处将 <zone> 替换为可用区名称。

创建存储服务

本文档仅描述与标准类型集群不同的参数,其他参数请参考创建标准类型集群。

创建集群

参数说明
集群类型选择 Stretch。
仲裁可用区选择仲裁可用区名称。
数据可用区选择可用区名称并选择对应节点。

创建存储池

参数说明
副本数默认值为 4。
实例数当存储类型为 对象存储 时,为保证可用性,实例最小数为 2,最大数为 5。

相关操作

创建标准类型集群

详情请参考创建标准类型集群。

清理分布式存储

详情请参考清理分布式存储。