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

挑战

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

解决方案

CERN 的技术团队采用了容器化和云原生实践,选择 Kubernetes 进行编排,Helm 进行部署,Prometheus 进行监控,以及 CoreDNS 进行集群内部的 DNS 解析。Kubernetes 联邦允许该组织在本地和公共云上运行一些生产工作负载。

影响

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

欧洲核子研究组织 (CERN) 的使命是研究基础科学,并拥有大量极其庞大的机器,其运营规模只能用超大规模来形容。

实验在粒子加速器中进行,其中最大的加速器周长为 27 公里。CERN 软件工程师 Ricardo Rocha 说:“我们将质子加速到非常高的能量,接近光速,然后使两束质子束在明确的位置发生碰撞。我们在这些发生碰撞的位置周围进行实验。最终结果是我们必须处理的大量数据。”

他的确指的是大量数据:CERN 目前使用其数据中心的 10,000 个虚拟机监控器和 320,000 个核心存储和处理 330 PB 的数据,这些数据来自 4,300 个项目和 3,300 个用户。

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

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

Rocha 的团队在 2015 年下半年开始研究 Kubernetes 和容器化。“我们已经使用分布式基础设施几十年了,”Rocha 说。“Kubernetes 是我们可以非常认同的东西,因为它自然是分布式的。它为我们提供了一个跨异构资源的统一 API 来定义我们的工作负载。这在过去当我们想要将资源扩展到我们的基础设施之外时,我们为此付出了很多努力。”

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

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

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

Rocha 指出,粒子加速器中使用的指标可能是每秒的事件数,但实际上“真正重要的是我们处理数据的速度和数量。”而使用 Kubernetes 肯定提高了效率。最初,虚拟化带来了 20% 的开销,但通过调整,这减少到了 ~5%。迁移到裸机上的 Kubernetes 将使其降至 0%。预计无需托管虚拟机也可以恢复 10% 的内存容量。

CERN 自 2018 年 2 月以来一直在将 Kubernetes 联邦用于其部分生产工作负载,这使得该组织能够采用混合云策略。而且这样做非常简单。“我们有一个暑期实习生在研究联邦,”Rocha 说。“多年来,我一直在开发分布式计算软件,这花了几十年和许多人的大量努力来稳定并确保其工作。对于我们的实习生来说,他能够在几天之内向我和我的团队演示我们在 CERN 有一个集群,并且在公共云中还有一些联邦在一起的集群,我们可以将工作负载提交给这些集群。这对我们来说是令人震惊的。它真正展示了使用这种成熟技术的强大功能。”

凭借这样的成果,Kubernetes 在 CERN 的采用取得了快速进展,该团队渴望回馈社区。“如果我们回顾 90 年代和 2000 年代早期,没有很多公司专注于必须扩展到如此规模的系统,存储 PB 级数据,分析 PB 级数据,”Rocha 说。“Kubernetes 得到如此广泛的社区和不同背景的支持这一事实,激励我们做出回馈。”

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

所有这些都极大地改变了欧洲核子研究中心 (CERN) 的文化。罗查说:“十年前,‘我需要这个,我找几个开发人员,然后我来实现它’是常态。而现在是 ‘我需要这个,我确信其他人也需要这个,所以我会四处询问’。云原生计算基金会 (CNCF) 是一个很好的资源,因为它提供了非常庞大的应用程序目录。现在,要证明内部开发新产品的合理性非常困难。真的没有理由继续这样做。对我们来说,尝试使用现成的产品更容易,如果我们觉得它是一个好的解决方案,我们会尝试联系社区并开始与该社区合作。”