slurmrestd
部分: Slurm REST 守护进程 (8)更新: Slurm REST 守护进程
索引
名称
slurmrestd - 通过 REST API 接口访问 Slurm。概述
slurmrestd [选项...] <[主机]:端口|unix:/path/to/socket>...描述
slurmrestd 是 Slurm 的 REST API 接口。它可以在两种模式下使用:
Inetd 模式: slurmrestd 将读取和写入 STDIO。如果 STDIN 是一个套接字文件描述符,slurmrestd 将检测到这一点并使用相关功能。如果检测到控制 TTY,将自动激活交互模式以提供额外的日志信息。此模式旨在与管道输入、inetd、xinetd 或 systemd 套接字激活一起使用。
监听模式: slurmrestd 将在每个请求的 主机:端口 对或 UNIX 套接字上打开一个监听套接字。
选项
- [https://][host]:porthttps://][host]:port" href="#OPT_[
https://][host]:port"> - 要监听的主机名和端口。主机 可以是一个可解析的 IPv4/IPv6 IP 或主机名。主机名仅在启动时查找,并且在进程的生命周期内不会更改。主机 是可选的;如果未提供,slurmrestd 将在所有网络接口上监听。https 是可选的;如果未提供,slurmrestd 将不使用 TLS 插件加密流量。如果指定了 https;slurmrestd 将使用(并要求)配置的 TLS 插件来加密流量。
-
- unix:/path/to/socket
- 在本地 UNIX 套接字上监听。必须有权限在文件系统中创建套接字。
-
- -a <plugin>[,plugin]...
- 要加载的身份验证插件的逗号分隔列表。默认情况下,将加载所有可用的身份验证插件。
- 注意: 令牌通常通过调用 "scontrol token" 生成。
-
- 注意:
- 每个连接可能导致一个 RPC 到控制守护进程,可能导致控制器过载。每个连接还可以在连接的生命周期内占用内存。一次处理过多连接可能会消耗更多内存。当增加此值时,进程限制(ulimit(3))可能需要调整。
- 默认值: 124
环境变量
以下环境变量可用于覆盖编译到 slurmrestd 中的设置。
- ABORT_ON_FATAL
- 当检测到致命错误时,使用 abort() 而不是 exit() 来终止进程。这允许在不重新编译 Slurm 的情况下捕获回溯。
-
- SLURM_CONF
- Slurm 配置文件的位置。
-
- SLURM_DEBUG_FLAGS
- 指定 slurmrestd 使用的调试标志。有关完整的标志列表,请参见 slurm.conf(5) 手册页。环境变量优先于 slurm.conf 中的设置。
-
- SLURMRESTD_JSON 或 SLURM_JSON
- 控制 JSON 序列化:
-
- become_user
- 允许 slurmrestd 以 root 身份运行,以便成为所有请求的请求用户。当与 rest_auth/local 结合使用时,当用户通过命名的 UNIX 套接字连接时,slurmrestd 将 setuid()/setgid() 到该用户/组,然后以给定用户的身份完成所有请求。此模式仅适用于 inet 模式,因为用户更改在进程的生命周期内是永久的。此模式与 rest_auth/jwt 不兼容,建议使用 "-a rest_auth/local" 参数启动 slurmrestd。
-
- disable_unshare_files
- 禁用与父进程共享文件描述符。
-
- disable_unshare_sysv
- 禁用共享 SYSV 命名空间。
-
- disable_user_check
- 禁用检查 slurmrestd 是否不是以 root 或 SlurmUser 身份运行,或与 root 或 SlurmUser 的主组一起运行。禁用此检查将允许 slurmrestd 以 root 或 SlurmUser 身份运行,这将允许任何可以与此守护进程通信的人以 root 用户的身份在集群上运行任何操作。
信号
注意事项
SPANK 和 clifilter 插件在 slurmrestd 中不受支持,因为它们缺乏线程安全性。活动的 SPANK 插件和 JobSubmitPlugins 在 slurmctld 中独立于 slurmrestd,可以用于强制执行作业提交的站点策略。示例
生成没有配置的 OpenAPI 架构
-
$ slurmrestd -f /dev/null --generate-openapi-spec -s slurmdbd,slurmctld -d v0.0.42 > openapi.json
以监听模式启动 slurmrestd,使用 UNIX 套接字:
-
$ export SLURMRESTD=/var/spool/slurm/restd/rest $ slurmrestd -s slurmctld,slurmdbd -d v0.0.42 unix:$SLURMRESTD
使用 ping 验证与 slurmctld 的连接,slurmrestd 在监听模式下运行:
-
$ export $(scontrol token) $ curl --unix-socket "${SLURMRESTD}" -H "X-SLURM-USER-TOKEN:${SLURM_JWT}" 'http://ignored_with_unix_sockets/slurm/v0.0.42/ping' | jq '.pings' [ { "hostname": "omicronpersei8", "pinged": "UP", "latency": 314, "mode": "primary" } ]
使用 diag 请求验证与 slurmdbd 的连接,slurmrestd 在监听模式下运行:
-
$ export $(scontrol token) $ curl --unix-socket "${SLURMRESTD}" -H "X-SLURM-USER-TOKEN:${SLURM_JWT}" 'http://ignored_with_unix_sockets/slurmdb/v0.0.42/diag' | jq '.pings' 1722009793
在 INETD 模式下使用 slurmrestd 查询节点状态:
-
$ echo -e "GET http://ignored/slurm/v0.0.42/node/host1 HTTP/1.1\r\n" | slurmrestd HTTP/1.1 200 OK Content-Length: 3174 Content-Type: application/json { "nodes": [ { "architecture": "x86_64", "burstbuffer_network_address": "", "boards": 1, "boot_time": { "set": true, "infinite": false, "number": 1720820315 }, "cluster_name": "", "cores": 16, "specialized_cores": 0, "cpu_binding": 0, "cpu_load": 446, "free_mem": { "set": true, "infinite": false, "number": 39871 }, "cpus": 32, "effective_cpus": 32, "specialized_cpus": "", "energy": { "average_watts": 0, "base_consumed_energy": 0, "consumed_energy": 0, "current_watts": { "set": false, "infinite": false, "number": 0 }, "previous_consumed_energy": 0, "last_collected": 0 }, "external_sensors": {}, "extra": "", "power": {}, "features": [], "active_features": [], "gpu_spec": "", "gres": "gpu:fake1:1(S:0),gpu:fake2:1(S:0)", "gres_drained": "N/A", "gres_used": "gpu:fake1:0(IDX:N/A),gpu:fake2:0(IDX:N/A)", "instance_id": "", "instance_type": "", "last_busy": { "set": true, "infinite": false, "number": 1722009794 }, "mcs_label": "", "specialized_memory": 0, "name": "host1", "next_state_after_reboot": [ "INVALID" ], "address": "localhost", "hostname": "omicronpersei8", "state": [ "IDLE" ], "operating_system": "Linux 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024", "owner": "", "partitions": [ "debug" ], "port": 5015, "real_memory": 127927, "res_cores_per_gpu": 0, "comment": "", "reason": "", "reason_changed_at": { "set": true, "infinite": false, "number": 0 }, "reason_set_by_user": "", "resume_after": { "set": true, "infinite": false, "number": 0 }, "reservation": "", "alloc_memory": 0, "alloc_cpus": 0, "alloc_idle_cpus": 32, "tres_used": "", "tres_weighted": 0.0, "slurmd_start_time": { "set": true, "infinite": false, "number": 1722009794 }, "sockets": 1, "threads": 2, "temporary_disk": 0, "weight": 1, "tres": "cpu=32,mem=127927M,billing=32,gres/gpu=2", "version": "24.11.0-0rc1" } ], "last_update": { "set": true, "infinite": false, "number": 1722010273 }, "meta": { <<< TRIMMED >>> }, "errors": [], "warnings": [] }
向运行在监听模式下的 slurmrestd 提交作业:
-
$ jq . example_job.json { "job": { "script": "#!/bin/bash\nsleep 30", "name": "示例作业", "account": "sub1", "environment": [ "PATH=/usr/bin/:/bin/" ], "current_working_directory": "/tmp/", "tasks": 12, "memory_per_cpu": 100, "time_limit": 240 } } $ curl -H "Content-Type: application/json" --data-binary @example_job.json --unix-socket "${SLURMRESTD}" 'http://ignored/slurm/v0.0.42/job/submit' { "job_id": 9, "step_id": "batch", "job_submit_user_msg": "", "meta": { <<< TRIMMED >>> }, "errors": [], "warnings": [] } $ curl -H "Content-Type: application/json" --data-binary @example_job.json --unix-socket "${SLURMRESTD}" 'http://ignored/slurm/v0.0.42/job/submit' { "job_id": 7, "step_id": "batch", "job_submit_user_msg": "", "meta": { }, "errors": [], "warnings": [ { "description": "预期 OpenAPI 类型=array (Slurm 类型=list),但获得 OpenAPI 类型=object (Slurm 类型=dictionary): { "source": "#/job/environment/" } ] }
版权
版权 (C) 2019-2022 SchedMD LLC。此文件是 Slurm 的一部分,一个资源管理程序。 有关详细信息,请参见 <https://slurm.schedmd.com/>。
Slurm 是自由软件;您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它;许可证的版本 2,或(根据您的选择)任何更高版本。
Slurm 的分发希望它会有用,但不提供任何担保;甚至不提供适销性或特定用途适用性的默示担保。有关详细信息,请参见 GNU 通用公共许可证。
另见
slurm.conf(5), slurmctld(8), slurmdbd(8)
索引
此文档由 man2html 使用手册页创建。
时间: 2025年7月2日 13:21:54 GMT