Calamari 的历史与未来

nwl

Calamari 项目于 2013 年夏天启动,旨在创建一个 Ceph 管理平台,虽然运行 Ceph 并非必须,但可以使其更轻松、更高效。看到该项目 开源,并有如此多的热心人士愿意贡献力量,令人兴奋。

Calamari 的愿景是提供 5 个核心的功能或工作流程支柱

  1. 配置:允许管理员在操作系统上部署 Ceph 软件。 此功能目前由 ceph-deploy 提供。

  2. 配置:启用策略和组件设置应用于集群。特别是,允许管理员定义 CRUSH 映射。

  3. 监控:确保需要用户交互的关键事件被突出显示,并为管理员提供集群指标和状态的“一目了然”视图。 此支柱涉及提供复杂数据集的清晰可视化。

  4. 管理:启用对正在运行的集群的临时更改,通常是对监控信息的回应。

  5. 分析:解释来自集群的信息,以帮助建议操作甚至自动应用它们。

第一个 1.0 版本由 Dan Mick、Yan-Fa Li 和 Noah Watkins 开发,在 Inktank Ceph Enterprise 的第一个版本发布时,经过 4 个月的快速开发后发布。 它几乎完全专注于监控。特别是,目标是创建一个简单的仪表板,允许 Ceph 管理员查看有关集群的最重要详细信息,并提供可视化效果以帮助调试问题。 John Spray 和 Gregory Meno 在几个月后加入了团队,随后发布了版本 1.1,为仪表板带来了多项视觉和架构改进。

在过去的 6 个月里,该团队一直专注于 v1.2,它带来了围绕 OSD、Pool 和 Placement Groups 的第一组管理功能,以及一项重大的重新架构,以提高响应速度并允许更广泛的网络拓扑选项,以确定 Calamari 在网络中的位置。

经验教训

在此过程中,我们学到了很多关于管理 Ceph 集群的有效和无效方法。

可视化

我们所谓的“Workbench”视图是尝试以允许按组件状态排序和过滤的方式表示物理拓扑的首次尝试。 最初的实现仅限于固定数量的 OSD。 我们探索了其他显示信息的方法(例如 Google Maps 样式的扫描和漫游或基于六边形的单元用于主机),但由于缺乏资源尚未实现它们。 提供可以扩展到从几个主机到数千个主机的可视化效果并非易事,我们需要在此基础上构建许多 UX 最佳实践。

观点

虽然分析支柱的目标是将经验丰富的 Ceph 管理员的知识嵌入到 Calamari 中(我过去称之为“Kyle Bader in a box”,指的是 DreamHost 最初的 Ceph 管理员),但我们发现即使尝试在监控功能之上提供一个 NOC 友好的仪表板也需要在代码中嵌入观点(例如,应将哪些 PG 状态视为引起关注的原因)。 需要做更多的工作来确保我们拥有做出关于何时发出红色警报的明智判断的正确数据,其中一些需要对 Ceph 进行更改。

API

Calamari 的第一个版本通过 Dan 的 ceph-rest-api 包从 Ceph 集群检索数据,该包为 CLI 到基于 Web 的服务的简单映射,并旨在允许社区围绕 Ceph 开发工具(并明确确保 Calamari 不是一个锁定)。

然而,与需要主观意见来解析多个数据源的需求相符,我们意识到为了允许人们轻松构建工具(并为 SNMP 陷阱等功能提供基础),提供一个更高层次的解释 API 以便在数据传输之前进行分析是有用的。 Calamari REST API 这样做是为了允许 GUI 专注于显示数据而不是处理数据。 我们预计 Calamari REST API 将演变为现有监控 API 的超集。 这将确保粒度和解释数据都可用于人们连接到外部监控工具,并且社区的努力可以集中在围绕单个 API 构建生态系统。

未来

对于剩余的支柱,配置和配置旨在通过 Foreman、Puppet、Salt 和类似工具嵌入到 Calamari 中。 这应该比原生开发功能更简单,但这显然不是唯一的可能架构。 我希望看到一个干净的界面,允许用户选择他们的工具,但仍然允许 Calamari 驱动一致的集成工作流程。

我个人认为分析是最有趣的开发领域,特别是如果可以设计一种尊重隐私的方式来允许 Ceph 用户彼此共享数据。 能够了解最频繁发生故障的原因、哪些设置最适合特定工作负载以及哪些硬件具有最佳性能将提供大量的原始数据,供个人组织或更广泛的社区使用(取决于人们分享的意愿)。 这将使我们能够开发智能来自动响应系统状态管理任务,从而将 Calamari 提升到不仅仅是一个杠杆驱动的管理工具,而成为进一步使 Ceph 通过运营效率提供低成本存储的工具。

最后,Inktank 专业服务团队表示有兴趣在 Calamari 中添加第 6 个支柱,即性能测试,即嵌入他们用于测试集群性能的常用工具,以便 Calamari 可以汇总和存储测试结果(也可能用于共享)。

我期待在即将举行的开发者峰会上讨论所有这些选项以及更多内容,以欢迎 Calamari 加入 Ceph 开发者社区。