注意

本文档适用于 Ceph 的开发版本。

关于 Cephadm 可扩展性的注释和思考

关于本文档

本文档没有定义具体的提议或未来的工作。它只是列出了一些可能与未来 cephadm 增强功能相关的想法。

简介

当前情况

Cephadm 管理所有已注册的主机。这意味着它会定期从每个主机上抓取数据,以识别主机上的变化,例如:

  • 添加/移除磁盘

  • 添加/移除守护程序

  • 主机网络/防火墙等发生变化

目前,cephadm 每 6 分钟抓取一次每个主机(最多 10 个并行),除非手动强制刷新。

磁盘 (ceph-volume)、守护程序 (podman/docker) 等的刷新按顺序进行。

有了 cephadm exporter,我们现在大大减少了扫描主机的时间,但问题仍然存在:

cephadm-exporter 是否足以解决未来所有的可扩展性问题?

cephadm-exporter REST API 的考量

cephadm-exporter 使用 HTTP 提供主机元数据的端点。我们可能会遇到这种方法的一些问题,需要适时缓解。

  • 使用 cephadm-exporter,我们使用 SSH 和 HTTP 连接到每个主机。拥有两个不同的传输层感觉很奇怪,我们可能需要考虑将其减少到只使用一个协议。

  • 当前将 bin/cephadm 交付给主机的方法不允许使用外部依赖项。这意味着我们只能使用内置的 HTTP 服务器库,这对于提供良好的开发体验来说并不理想。我们需要打包和分发(以某种方式)bin/cephadm,才能使用更好的 http 服务器库。

MON 的 config-key 存储

mgr/cephadm 从每个主机查询元数据后,cephadm 将数据存储在 mon 的 k-v 存储中。

如果允许每个主机将自己的元数据写入存储,则 mgr/cephadm 将不再需要收集数据。

出现了一些问题:

  • mgr/cephadm 现在需要从 config-key 存储中查询数据,而不是依赖缓存数据。

  • cephadm 知道三种不同类型的数据:(1) 关键数据,需要存储在 config-key 存储中。(2) 可以只保存在内存中的数据。(3) 可以存储在 RADOS 池中的数据。我们如何将这个想法应用于这些不同类型的数据?

增加工作池大小

mgr/cephadm 目前能够同时抓取 10 个节点。

单个主机的抓取时间保持不变。我们只是减少了总的执行时间。

在最好的情况下,我们可以达到 O(主机) + O(守护程序)。

向后兼容性

任何更改都需要向后兼容,或者与任何现有功能完全隔离。目前有一些正在运行的 cephadm 集群需要升级路径。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入