无配置的 Slurm

“无配置” Slurm 是一项功能,允许计算节点 — 特别是 slurmd 进程 — 和在登录节点上运行的用户命令直接从 slurmctld 获取配置信息,而不是从预先分发的本地文件中获取。您的集群确实需要在 Slurm 控制器上有一组中心配置文件 — 在 Slurm 的术语中,“无配置”意味着计算节点、登录节点和其他集群主机不需要部署这些文件的本地副本。

slurmd 在启动时将联系您指定的 slurmctld,并将配置文件拉取到节点。这个 slurmctld 可以通过显式选项识别,或者 — 更好 — 通过在集群内部定义的 DNS SRV 记录。

如果您有一个 登录节点,您将从中运行客户端命令,这些客户端命令必须使用 DNS 记录从控制器获取配置信息。如果您预计登录节点会有大量流量,这可能会产生大量对配置文件的请求。在这种情况下,可以使用 sackd 来管理节点的配置文件,从而减少网络请求。

安装

安装此功能不需要额外步骤。它从 Slurm 20.02 开始默认内置。

设置

slurmctld 必须首先配置为以无配置模式运行。这可以通过在 slurm.conf 中设置 SlurmctldParameters=enable_configless 并重启 slurmctld 来实现。

启用后,您必须配置 slurmd 从 slurmctld 获取其配置。这可以通过使用 --conf-server 选项启动 slurmd,或通过设置 DNS SRV 记录并确保计算节点上没有本地配置文件来完成。

--conf-server 选项优先于 DNS 记录。

命令行选项采用 "$host[:$port]",例如:

slurmd --conf-server slurmctl-primary:6817

指定端口是可选的,如果未指定,将默认为 6817。可以按优先顺序(从高到低)指定多个 slurmctld,以逗号分隔。

slurmd --conf-server slurmctl-primary:6817,slurmctl-secondary

同样的信息可以通过 DNS SRV 记录提供。例如:

_slurmctld._tcp 3600 IN SRV 10 0 6817 slurmctl-backup
_slurmctld._tcp 3600 IN SRV 0 0 6817 slurmctl-primary

将在启动时向 slurmd 提供所需的信息。如上所示,如果您在 HA 设置中部署了 Slurm,可以指定多个 SRV 记录。优先级最低的 DNS SRV 条目应为您的主要 slurmctld,备份 slurmctld 的优先级值应更高。

初步测试

在配置好 slurmctld 并启动 slurmd 后,您可以在几个地方检查以确保节点上存在配置。配置文件将位于 SlurmdSpoolDir 下的 /conf-cache/ 中,并将在 /run/slurm/conf 中自动创建指向此位置的符号链接。您可以通过在 slurmctld 节点的 slurm.conf 中添加注释并运行 scontrol reconfig 来确认重新加载是否有效,并检查配置是否已更新。

限制

在 "SlurmdSpoolDir" 或 "SlurmdPidFile" 中使用 "%n" 将不会正确替换为 NodeName,除非 slurmd 也使用 "-N" 选项启动。

如果您使用 systemd 启动 slurmd,您必须确保单元文件中不存在 "ConditionPathExists=*",否则 slurmd 将无法启动。(在 Slurm 20.02 及以上版本中提供的示例 slurmd.service 文件不包含此条目。)

如果任何支持的配置文件 "Include" 其他配置文件,则仅当其 "Include" 文件名引用没有路径分隔符且文件位于 slurm.conf 附近时,才会传送包含的配置。任何其他配置文件需要以不同方式共享或添加到父配置中。

如果在 slurm.conf 中指定了 PrologEpilog 脚本,则仅当引用的文件名没有路径分隔符且文件位于 slurm.conf 附近时,脚本才会被传送。

备注

确定使用哪个配置源的优先顺序如下:

  1. slurmd --conf-server $host[:$port] 选项
  2. -f $config_file 选项
  3. SLURM_CONF 环境变量(如果设置)
  4. 本地 slurm 配置文件:
    1. 默认 slurm 配置文件(可能是 /etc/slurm.conf)
    2. 对于用户命令,缓存的 slurm 配置文件 (run/slurm/conf/slurm.conf)
  5. SLURM_CONF_SERVER 环境变量(如果设置)
  6. 任何 DNS SRV 记录(从最低优先级值到最高)
    • SRV 记录的 TTL(生存时间)不会影响获得的配置的有效性。节点必须通过 scontrol reconfig 或 slurmd 重启来通知任何配置文件的更改。

支持的配置文件包括:

  • slurm.conf
  • acct_gather.conf
  • cgroup.conf
  • cli_filter.lua
  • gres.conf
  • helpers.conf
  • job_container.conf
  • mpi.conf
  • oci.conf
  • plugstack.conf
  • scrun.lua
  • topology.conf

最后修改于 2025 年 4 月 18 日