Ceph集群架构介绍(pacific版本)


更改监视器选举中的说明进行操作。

最后,告诉集群进入延伸模式。这mon.e是决胜站点,我们正在跨数据中心进行拆分

$ ceph mon enable_stretch_mode e stretch_rule data center
  • 启用延伸模式后,OSD 将仅在 PG 对等跨数据中心(或您指定的任何其他 CRUSH 存储桶类型)时激活 PG,假设两者都处于活动状态。池的大小将从默认的 3 增加到 4,预计每个站点中有 2 个副本。OSD 只能连接到同一数据中心的MON。如果未指定位置,则不允许新MON加入集群。
  • 如果一个数据中心的所有 OSD 和MON一次都无法访问,则幸存的数据中心将进入降级延伸模式。这将发出警告,将 min_size 减小到 1,并允许集群在剩余的单个站点中使用数据进行活动。请注意,我们不会更改池副本数,因此您还会收到池副本数太小的警告——但一个特殊的拉伸模式标志会阻止 OSD 在剩余的数据中心创建额外的副本(因此它只会保留 2 个副本, 像之前一样)。
  • 当丢失的数据中心回来时,集群将进入恢复延伸模式。这会改变警告并允许对等,但仍然只需要来自一直处于运行状态的数据中心的 OSD。当所有 PG 都处于已知状态,并且既没有降级也没有不完整时,集群将转换回常规延伸模式,结束警告,将 min_size 恢复为其起始值 (2) 并要求两个站点对等,并停止要求始终对等时的活动站点(以便您可以在必要时故障转移到另一个站点)。

2.4 限制

  • 正如上述设置所示,延伸模式仅处理 2 个具有 OSD 的站点。
  • 虽然没有强制执行,但您应该在每个站点运行 2 个MON,外加一个 tiebreaker(仲裁站点MON),总共 5 个。这是因为 OSD 只能在延伸模式下连接到自己站点中的MON。
  • 您不能将纠删码池与延伸模式一起使用。如果您尝试,它会拒绝,并且不允许您在延伸模式下创建 EC 池。
  • 您必须创建自己的 CRUSH 规则,该规则在每个站点提供 2 个副本,并且您必须使用 4 个副本,每个站点有 2 个副本。如果您的现有池具有非默认 size/min_size,则当您尝试启用延伸模式时,Ceph 将反对。
  • 因为它可能会在降级min_size 1时运行,所以您应该只对全闪存 OSD 使用延伸模式。这可以最大限度地减少连接恢复后数据恢复所需的时间,从而最大限度地减少数据丢失的可能性。
  • 希望未来的开发将扩展此功能以支持 EC 池并运行超过 2 个完整站点。

2.5 其他命令

从 Pacific v16.2.8 开始,如果您的 tiebreaker MON由于某种原因出现故障,您可以更换它。启动新MON并运行:

$ ceph mon set_new_tiebreaker mon.

如果新MON与现有的非决胜MON位于同一位置,此命令将发出抗议。此命令不会删除之前的决胜MON;你应该自己删除。

同样在 16.2.7 中,如果您正在编写自己的工具来部署 Ceph,您可以在启动监视器时使用新选项--set-crush-location,而不是运行 ceph mon set_location。此选项仅接受一个“bucket=loc”对,例如 ,它必须与您在运行ceph-mon --set-crush-location 'datacenter=a'enable_stretch_mode时指定的存储桶类型匹配。

在延伸降级模式下,当断开连接的数据中心恢复时,集群将自动进入“恢复”模式。如果这不起作用,或者您想尽早启用恢复模式,您可以调用:

$ ceph osd force_recovery_stretch_mode --yes-i-realy-mean-it

但是这个命令应该不是必需的;它包括处理意外情况。

当处于恢复模式时,集群应该在 PG 健康时回到正常的延伸模式。如果这没有发生,或者您想尽早强制跨数据中心对等并愿意冒数据停机的风险(或已单独验证所有 PG 都可以对等,即使它们没有完全恢复),您可以调用:

$ ceph osd force_healthy_stretch_mode --yes-i-really-mean-it

这个命令应该不是必需的;它包括处理意外情况。但是您可能希望调用它来删除HEALTH_WARN恢复模式生成的状态。