公司 CERN 地点 瑞士 日内瓦 行业 粒子物理研究

挑战

在欧洲核子研究组织 (CERN),物理学家们通过实验来研究基础科学。CERN 软件工程师 Ricardo Rocha 表示:“在粒子加速器中,我们将质子加速到非常高的能量,接近光速,并使两束质子发生碰撞。最终的结果是产生大量我们需要处理的数据。” CERN 目前在其数据中心存储了 330 PB 的数据,未来几年加速器的升级预计会将这一数字提高 10 倍。此外,该组织在大型会议前会经历工作负载的极端峰值,需要其基础设施能够扩展以应对这些峰值。Rocha 说:“我们希望拥有一个更混合的基础设施,既有我们的本地基础设施,又能在出现这些峰值时临时利用公共云。我们一直在寻找新技术来帮助提高基础设施的效率,以便我们可以将更多资源用于实际数据处理。”

解决方案

CERN 的技术团队采用了容器化和云原生实践,选择 Kubernetes 进行编排,Helm 进行部署,Prometheus 进行监控,CoreDNS 用于集群内的 DNS 解析。Kubernetes Federation 使得该组织能够在本地和公共云中运行部分生产工作负载。

影响

Rocha 表示:“Kubernetes 为我们提供了应用程序的完全自动化。它为所有部署在 Kubernetes 中的应用程序和工作负载提供了内置的监控和日志记录。这极大地简化了我们目前的部署。” 部署一个用于复杂分布式存储系统的新集群所需的时间从 3 个多小时减少到不到 15 分钟。向集群添加新节点过去需要一个多小时;现在只需要不到 2 分钟。自动伸缩系统组件副本所需的时间从一个多小时减少到不到 2 分钟。最初,虚拟化带来了 20% 的开销,但经过优化后,这一数字降至约 5%。迁移到裸机上的 Kubernetes 可以将其降至 0%。无需托管虚拟机预计还能回收 10% 的内存容量。

欧洲核子研究组织 (CERN) 的使命是研究基础科学,并拥有一批超大型机器,其运营规模堪称超大规模(hyperscale)。

实验在粒子加速器中进行,其中最大的周长为 27 公里。CERN 软件工程师 Ricardo Rocha 表示:“我们将质子加速到非常高的能量,接近光速,并使两束质子在特定位置发生碰撞。我们在发生碰撞的位置周围构建实验。最终的结果是产生了大量我们需要处理的数据。”

他的意思确实是“大量”:CERN 目前在其数据中心使用 10,000 个虚拟机监控程序和 320,000 个 CPU 核心,存储和处理来自 4,300 个项目和 3,300 名用户的数据,总量达 330 PB。

多年来,CERN 技术部门构建了一个基于 OpenStack 私有云的大型计算基础设施,以帮助该组织的物理学家们分析和处理所有这些数据。该组织会经历工作负载的极端峰值。Rocha 说:“很多时候,就在会议前,物理学家们希望进行大量的额外分析来发表他们的论文,我们必须扩展以应对这些峰值,这意味着在某些情况下需要超量使用资源。我们希望拥有一个更混合的基础设施,既有我们的本地基础设施,又能在出现这些峰值时临时利用公共云。”

此外,几年前,CERN 宣布将对其加速器进行重大升级,这意味着数据收集量将增加十倍。Rocha 说:“所以我们一直在寻找新技术来帮助提高我们基础设施的效率,以便我们可以将更多资源用于实际的数据处理。”

Rocha 的团队在 2015 年下半年开始研究 Kubernetes 和容器化。Rocha 说:“我们使用分布式基础设施已经几十年了。Kubernetes 与我们非常相关,因为它天生就是分布式的。它为我们提供了一个跨异构资源的统一 API 来定义我们的工作负载。过去,当我们想将资源扩展到基础设施之外时,这正是我们遇到的一个大难题。”

该团队创建了一个原型系统,供用户在 CERN 的基础设施中部署自己的 Kubernetes 集群,并花了六个月时间验证用例,确保 Kubernetes 与 CERN 的内部系统集成。主要用例是批处理工作负载,这占 CERN 资源使用的 80% 以上。(仅一个进行大部分物理数据处理和分析的项目就消耗了 250,000 个 CPU 核心。)Rocha 说:“这是在简化部署、日志记录和监控方面的投资能很快获得回报的地方。” 其他用例包括基于 Spark 的数据分析和机器学习,以改进物理分析。他补充说:“这些技术大多与 Kubernetes 集成得非常好,这让我们的工作变得更容易。”

该系统于 2016 年 10 月投入生产,同时使用 Helm 进行部署、Prometheus 进行监控以及 CoreDNS 进行集群内的 DNS 解析。Rocha 说:“Kubernetes 为我们提供的一件事是应用程序的完全自动化。因此,它为所有部署在 Kubernetes 中的应用程序和工作负载提供了内置的监控和日志记录。这极大地简化了我们目前的部署。” 部署一个用于复杂分布式存储系统的新集群所需的时间从 3 个多小时减少到不到 15 分钟。

向集群添加新节点过去需要一个多小时;现在只需要不到 2 分钟。自动伸缩系统组件副本所需的时间从一个多小时减少到不到 2 分钟。

Rocha 指出,粒子加速器中使用的衡量标准可能是每秒事件数,但实际上,“处理数据的速度和数量”才是真正重要的。而且,使用 Kubernetes 后效率确实得到了提高。最初,虚拟化带来了 20% 的开销,但经过优化后,这一数字降至约 5%。迁移到裸机上的 Kubernetes 可以将其降至 0%。无需托管虚拟机预计还能回收 10% 的内存容量。

自 2018 年 2 月以来,CERN 一直将其部分生产工作负载使用 Kubernetes Federation,这使得该组织能够采用混合云策略。而且做到这一点非常简单。Rocha 说:“我们有一个暑期实习生负责 Federation 的工作。多年来,我一直开发分布式计算软件,这花了我大约十年时间和许多人的大量努力才稳定下来并确保其正常工作。而我们的实习生,在几天之内就能向我和我的团队演示,我们在 CERN 有一个集群,在公共云中有几个集群,它们已经联合在一起,我们可以向其提交工作负载。这让我们感到震惊。它真正显示了使用这种成熟技术的强大力量。”

取得这样的成果,Kubernetes 在 CERN 的采用率迅速提升,团队也渴望回馈社区。Rocha 说:“回顾 90 年代和 2000 年代初期,当时没有多少公司专注于需要扩展到这种规模的系统,用于存储和分析 PB 级数据。Kubernetes 得到如此广泛社区和不同背景的支持,这激励我们回馈社区。”

这些新技术不仅仅带来了基础设施的改进。CERN 还使用基于 Kubernetes 的 Reana/Recast 平台进行可复用分析,Rocha 称这是“将物理分析定义为一组完全容器化在单个入口点的工作流程的能力”。Rocha 说:“这意味着物理学家可以构建他或她的分析并在仓库中发布,与同事分享,并在 10 年后使用新数据重新进行相同的分析。如果回溯到 10 年前,这简直就是梦想。”

所有这些都极大地改变了 CERN 的文化。Rocha 说,十年前,“倾向总是:‘我需要这个,我找几个开发者,然后我来实现。’现在是‘我需要这个,我相信其他人也需要这个,所以我去周围问问。’CNCF 是一个很好的来源,因为那里有非常庞大的可用应用程序目录。现在很难证明内部开发新产品的合理性了。真的没有真正的理由继续这样做。对我们来说,尝试一下要容易得多,如果看到它是一个好的解决方案,我们就尝试联系社区并开始与该社区合作。”