HPC 集群 (SLURM):建立安全稳定系统的推荐方法

HPC 集群 (SLURM):建立安全稳定系统的推荐方法

我正在使用 SLURM 驱动的 HPC 集群,该集群包含 1 个控制节点和 34 个计算节点,由于当前系统并不是非常稳定,我正在寻找有关如何构建此类集群以使其变得更加稳定和安全的指南或最佳实践。需要明确的是,我不是在寻找有关资源管理或其他工具的详细答案,而是在寻找有关最基本设置的建议(请参阅下面的“问题”)。

我的当前设置

  • 1 个控制节点

    该机器在 /usr/local/slurm 上安装了 slurm,并运行 slurmctld 守护进程。完整的 slurm 目录(包括所有可执行文件和 slurm.conf)已导出。

  • 34 个计算节点

    这些机器将从控制节点导出的 slurm 目录挂载到 /usr/local/slurm 并运行 slurmd 守护进程。

我不使用任何备份控制节点。

如果我们的控制节点丢失,那么当前正在运行的作业能否存活下来似乎总是一个运气问题,所以我正在寻找一种方法来创建一个更稳定的设置。

当前设置可能存在问题

1)共享的slurm目录。我在网上找不到任何关于这到底是好是坏的实践的信息,但由于 slurm 配置文件必须在所有机器上都相同,所以我想我不妨分享完整的 slurm 安装。但当然,如果计算节点丢失,所有文件也将变得不可用。

2)缺少备份控制节点。这需要一个可以保存当前状态的共享 NFS 目录。问题是,这个目录应该放在哪里?当然,把它放在控制节点上是没有意义的,但它应该放在备份控制节点上吗?还是放在完全不同的机器上?

问题

那么,构建 HPC 集群时是否有一些指导原则需要遵循?问题包括,涉及哪些不同类型的节点,它们的工作是什么,应该通过 NFS 共享哪种数据,以及这些共享目录应该放在哪里?我也会感谢任何能为我指明正确方向的文献或教程。

答案1

我已经有一段时间没有接触过 SLURM 了,所以请谨慎对待以下内容。此外,集群的设计将由您的工作负载决定。通常,您从头节点和多个计算节点开始,然后从那里开始构建。像 Rocks 这样的软件包可以是一个很好的起点。

我可以看到共享目录是一个问题。根据您的工作量,您可能已经有大量流量通过 NFS,因此我会在本地安装 SLURM。您可以在 NFS 导出卷上提供 slurm 配置的副本,并使用“fornodes”脚本进行复制,或者使用脚本 scp。如果您对 slurm 配置进行了大量更改,您甚至可以将 slurmd 重启添加到脚本中。

至于备份控制节点,我不会担心。您的头节点可能是一个单点故障,因此如果您丢失了它,您的工作就会出现问题。我也不确定如果启用了 SLURM 会计,备份机制如何工作,因为它通常使用像 MySQL 这样的数据库。

对于导出,我通常会在较小的集群上导出 /home 目录和 /opt。根据您的数据需求,您可以考虑使用具有额外存储的单独存储节点来分散您的 NFS 负载。既然您提到您遇到了稳定性问题,您可以考虑使用 Ganglia 之类的软件包,它将监视节点负载、内存利用率、网络吞吐量和其他值,并将它们显示在一系列图表中。您还可以使用在计算节点上运行的命令行工具(如 top)来学习很多东西。您还需要测试作业的扩展性。如果您的作业在跨节点(MPI?)时运行得很糟糕,您可能需要更快、更低延迟的互连,如 Infiniband 或 10Gb 以太网。

祝你使用 SLURM 顺利。在换工作之前我喜欢使用它,但由于它不像 Torque/Maui 或 Sun/Oracle Grid Engine 那样流行,所以我的奇怪问题总是很难找到答案。

相关内容