根据https://slurm.schedmd.com/quickstart_admin.html#HA SLURM的高可用性是通过部署第二个BackupController来实现的,该第二个BackupController在主服务器发生故障时接管并从共享文件系统(可能是NFS)检索当前状态。
在我看来,这有许多缺点。例如。这将服务器总数限制为2,而第二台服务器可能几乎没有使用。
这是使用SLURM获得高可用头节点的唯一方法吗?
我想要做的是经典的3层设置:第一层中的负载均衡器,它将所有请求均匀地分布在秒层中的节点上。这要求头节点是无状态的。第三层是存储或读取所有信息的数据库层。我对SLURM的内部情况一无所知,我不确定这是否有可能实现。
答案 0 :(得分:1)
在当前设计中,控制器内部状态是内存中的,并且Slurm会将其保存到StateSaveLocation
配置参数指向的目录中的一组文件中。只有一个slurmctld
实例可以一次写入该目录。
将状态存储在数据库中的一个问题是资源分配的可怕延迟,需要大量同步,因为最佳资源分配只能通过完整信息来完成。与现有解决方案相比,Slurm现在可以处理与内存状态相同的吞吐量所需的基础设施成本非常高,而目前的解决方案只对内存中的数组进行按位操作。
这是使用SLURM获得高可用头节点的唯一方法吗?
您还可以使用Corosync管理单个MasterController。但事实上,Slurm只为HA提供主动/被动选项。
在我看来,这有许多缺点。例如。这限制了 服务器总数为2,第二台服务器可能勉强 使用
对于当前处理能力,控制器上的负载通常非常合理,并且资源分配问题不能简单地并行化(或无状态)。通常,备份控制器位于运行其他服务的计算机上。例如,在小型部署中,一台机器运行Slurm主控制器和其他服务(NFS,LDAP等)等,而另一台机器运行用户登录节点,它也充当辅助Slurm控制器。