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

挑战

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

解决方案

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

影响

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

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

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

他说的确实是“大量”:CERN 目前存储和处理 330 PB 的数据,这些数据来自 4,300 个项目和 3,300 个用户,并使用其数据中心的 10,000 个虚拟机管理程序和 320,000 个内核进行处理。

多年来,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 分钟。

向集群添加新节点以前需要 1 个多小时;现在不到 2 分钟。自动扩展系统组件副本所需的时间已从 1 个多小时缩短到不到 2 分钟。

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

自 2018 年 2 月以来,CERN 一直在使用 Kubernetes 联合体进行部分生产工作负载,这使该组织能够采用混合云策略。而且操作起来非常简单。“我们有一个暑期实习生在研究联合体,”Rocha 说。“多年来,我一直致力于开发分布式计算软件,这花费了十年时间和许多人的努力才能稳定并确保其正常运行。对于我们的实习生来说,他只花了几天时间就向我和我的团队展示了我们有一个 CERN 的集群,在公共云中还有几个集群,它们通过联合体连接在一起,我们可以向它们提交工作负载。这让我们震惊不已。它真正体现了使用这种成熟技术的强大功能。”

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

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

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