SLURM资源调度管理系统REST API服务配置,基于slurm22.05.9,centos9stream默认版本

本文主要是介绍SLURM资源调度管理系统REST API服务配置,基于slurm22.05.9,centos9stream默认版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前面给大家将了一下slurm集群的简单配置,这里给大家再提升一下,配置slurm服务的restful的api,这样大家可以将slurm服务通过api整合到桌面或者网页端,通过桌面或者网页界面进行管理。

1、SLURM集群配置

这里请大家参考:SLURM超算集群资源管理服务的安装和配置-基于slurm22.05.9和centos9stream,配置slurmdbd作为账户信息存储服务-CSDN博客文章浏览阅读302次,点赞10次,收藏6次。slurm介绍就不再赘述了,这里看官网链接,其他的自己搜索吧。这里主要将slurm集群配置的一般步骤,重点是slurmd的conf文件的配置;官网的内容比较全但不太好选择哪些是必须的,所以这里主要配置大家常用的东西,方便大家尽快上手。另外,这里写了slurm的版本,大家要注意一下尽量使用相同的版本,跨版本的服务容易引起莫名其妙的错误。https://blog.csdn.net/zrc_xiaoguo/article/details/134634440?spm=1001.2014.3001.5502

2、安装slurmrestd服务

###查看可用的安装包
yum list | grep slurmr
slurm-slurmrestd.x86_64                                                                  22.05.9-1.el9                                  epel  ##依然是来自于epel源,前面slurm服务配置好了应该都没问题了
##如果前面配置slurm服务的时候已经安装了slurmrestd则不需要重复安装了。
rpm -qa | grep slurmrestd##安装slurmrestd
yum install slurm-slurmrestd -y

3、配置slurmrestd服务(重要)

###先查看systemd配置的slurmrestd服务
systemctl status slurmrestd

先不能直接启动slurmrestd服务,否则会报不能使用root启用slurmrestd服务的错误信息:

 默认的启动服务ip是会在安装节点的所有ip上启用,也就是0.0.0.0,端口是6820,这个端口容易与ceph集群的端口冲突,所以建议修改掉。

这里报错不能使用root用户,所以需要修改slurmrestd.service文件,配置slurmrestd服务的运行账户,我们这里可直接使用已经创建的slurm,当然也可以重新创建一个slurmrestd或者slurmapi的专用账户,同时还需要将slurmrestd.socket文件所在文件夹权限设置成slurmrestd运行服务的账户

###直接编辑service文件,编辑之前建议备份
vim /usr/lib/systemd/system/slurmrestd.service[Unit]
Description=Slurm REST daemon
After=network-online.target slurmctld.service
Wants=network-online.target
ConditionPathExists=/etc/slurm/slurm.conf[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/slurmrestd
EnvironmentFile=-/etc/default/slurmrestd
# slurmrestd should not run as root or the slurm user.
# Please either use the -u and -g options in /etc/sysconfig/slurmrestd or
# /etc/default/slurmrestd, or explicitly set the User and Group in this file
# an unpriviledged user to run as.
User=slurm      #重点在这里,配置slurmrestd运行服务的账户和用户组
Group=slurm    #重点在这里,配置slurmrestd运行服务的账户和用户组
# Default to listen on both socket and slurmrestd port
ExecStart=/usr/sbin/slurmrestd $SLURMRESTD_OPTIONS unix:/var/run/slurm/slurmrestd.socket 0.0.0.0:46820     #这里也很重要,我这里将slurmrestd.cocket文件指定到了/var/run/slurm下面,并且将这个目录所有者权限设置为slurm。另外,服务的端口也修改为46820.
# Enable auth/jwt be default, comment out the line to disable it for slurmrestd
Environment="SLURM_JWT=daemon"
ExecReload=/bin/kill -HUP $MAINPID[Install]
WantedBy=multi-user.target######################################################
##service文件编辑完成后需要运行daemon-reload
systemctl daemon-reload####这个时候还不能启动slurmrestd服务,因为目录权限默认没有改变
chown slurm:slurm /var/run/slurm

4、配置JWT Authentication(重要) 

###生成jwtkey,目录根据自己需求设置吧
dd if=/dev/random of=/var/spool/slurm/statesave/jwt_hs256.key bs=32 count=1
chown slurm:slurm /var/spool/slurm/statesave/jwt_hs256.key
chmod 0600 /var/spool/slurm/statesave/jwt_hs256.key
chown slurm:slurm /var/spool/slurm/statesave
chmod 0755 /var/spool/slurm/statesave###关于安全的提示
The key does not have to be in the StateSaveLocation, but that is a convenient location if you have multiple controllers since it is shared between them. The key should not be placed in a directory where non-admin users might be able to access it. The key file should be owned by SlurmUser or root, with recommended permissions of 0400. The file must not be accessible by 'other'.###修改slurm.conf,加入或修改下面两个参数
AuthAltTypes=auth/jwt
AuthAltParameters=jwt_key=/var/spool/slurm/statesave/jwt_hs256.key##同步所有节点的slurm.conf和jwt.key文件,否则可能报各节点配置不一致的警告
scp host1:/var/spool/slurm/statesave/jwt_hs256.key /var/spool/slurm/statesave/jwt_hs256.key
scp host1:/etc/slurm/slurm.conf /etc/slurm
chown slurm:slurm /var/spool/slurm/statesave/jwt_hs256.key###重启slurmctld服务
systemctl restart slurmctld

获取token

###直接获取token,默认市场1800秒,可以自行指定
scontrol token username=slurmuser1
SLURM_JWT=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjzAsImlhdCI6MTcwMTE0MDkzMCwic3VuIjoidHpoeCJ9.vUz2V02dFpXmAr8eAJyRGNwcMe0xdqm7UgDvuM###指定token有效时间为600秒
scontrol token username=slurmuser1 lifespan=600

由于token有有效期,需要访问的时候再生成新token,所以在实际应用或终端测试时需要想办法自动获取用户token

请求的参数设置就不在这里细说了,请求成功会报相应的信息,设置大致如下

5、启动slurmrestd系统服务

####修改完权限后再启动slurmrestd的系统服务,同时加入系统自动启动
systemctl enable slurmrestd --now

 6、slurm API测试及使用

启动slurmrestd的系统服务后即可使用api测试工具或者自己调试nodejs等脚本测试api

默认系统不给任何api的提示,所有路径访问错误或者授权错误统一出现“Authentication failure”,直接使用ip:port访问会出现授权错误的情况。所以这里最重要的还需要配置api的认证方式,auth/jwt

 官网JWT方式的配置,但使用JWT方式需要统一修改slurm.conf中的authalttype了,需要重新配置一下slurm.conf并在复制到所有节点上。

7、slurmrestd的API列表

这里是官方文档,都很清晰了,能打开的话就直接看吧

Slurm Workload Manager - (schedmd.com)icon-default.png?t=N7T8https://slurm.schedmd.com/rest_api.html这里提到了权限,需要将X-SLURM-USER-NAME和X-SLURM-USER-TOKEN加入到头部headers中

Access

  1. APIKey KeyParamName:X-SLURM-USER-NAME KeyInQuery:false KeyInHeader:true
  2. APIKey KeyParamName:X-SLURM-USER-TOKEN KeyInQuery:false KeyInHeader:true
  3. HTTP Basic Authentication

Methods

[ Jump to Models ]

TABLE OF CONTENTS

Openapi

  • GET /openapi
  • GET /openapi/v3
  • GET /openapi.json
  • GET /openapi.yaml

Slurm

  • DELETE /slurm/v0.0.40/job/{job_id}
  • DELETE /slurm/v0.0.40/node/{node_name}
  • GET /slurm/v0.0.40/diag
  • GET /slurm/v0.0.40/job/{job_id}
  • GET /slurm/v0.0.40/jobs
  • GET /slurm/v0.0.40/licenses
  • GET /slurm/v0.0.40/node/{node_name}
  • GET /slurm/v0.0.40/nodes
  • GET /slurm/v0.0.40/partition/{partition_name}
  • GET /slurm/v0.0.40/partitions
  • GET /slurm/v0.0.40/ping
  • GET /slurm/v0.0.40/reconfigure
  • GET /slurm/v0.0.40/reservation/{reservation_name}
  • GET /slurm/v0.0.40/reservations
  • GET /slurm/v0.0.40/shares
  • POST /slurm/v0.0.40/job/{job_id}
  • POST /slurm/v0.0.40/job/submit
  • POST /slurm/v0.0.40/node/{node_name}

Slurmdb

  • DELETE /slurmdb/v0.0.40/account/{account_name}
  • DELETE /slurmdb/v0.0.40/association
  • DELETE /slurmdb/v0.0.40/associations
  • DELETE /slurmdb/v0.0.40/cluster/{cluster_name}
  • DELETE /slurmdb/v0.0.40/qos/{qos}
  • DELETE /slurmdb/v0.0.40/user/{name}
  • DELETE /slurmdb/v0.0.40/wckey/{id}
  • GET /slurmdb/v0.0.40/account/{account_name}
  • GET /slurmdb/v0.0.40/accounts
  • GET /slurmdb/v0.0.40/association
  • GET /slurmdb/v0.0.40/associations
  • GET /slurmdb/v0.0.40/cluster/{cluster_name}
  • GET /slurmdb/v0.0.40/clusters
  • GET /slurmdb/v0.0.40/config
  • GET /slurmdb/v0.0.40/diag
  • GET /slurmdb/v0.0.40/instance
  • GET /slurmdb/v0.0.40/instances
  • GET /slurmdb/v0.0.40/job/{job_id}
  • GET /slurmdb/v0.0.40/jobs
  • GET /slurmdb/v0.0.40/qos
  • GET /slurmdb/v0.0.40/qos/{qos}
  • GET /slurmdb/v0.0.40/tres
  • GET /slurmdb/v0.0.40/user/{name}
  • GET /slurmdb/v0.0.40/users
  • GET /slurmdb/v0.0.40/wckey/{id}
  • GET /slurmdb/v0.0.40/wckeys
  • POST /slurmdb/v0.0.40/accounts
  • POST /slurmdb/v0.0.40/accounts_association
  • POST /slurmdb/v0.0.40/associations
  • POST /slurmdb/v0.0.40/clusters
  • POST /slurmdb/v0.0.40/config
  • POST /slurmdb/v0.0.40/qos
  • POST /slurmdb/v0.0.40/tres
  • POST /slurmdb/v0.0.40/users
  • POST /slurmdb/v0.0.40/users_association
  • POST /slurmdb/v0.0.40/wckeys

8、请求结果示例

GET /openapi/v3

这篇关于SLURM资源调度管理系统REST API服务配置,基于slurm22.05.9,centos9stream默认版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/432227

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中的xxl-job调度器线程池工作机制

《Java中的xxl-job调度器线程池工作机制》xxl-job通过快慢线程池分离短时与长时任务,动态降级超时任务至慢池,结合异步触发和资源隔离机制,提升高频调度的性能与稳定性,支撑高并发场景下的可靠... 目录⚙️ 一、调度器线程池的核心设计 二、线程池的工作流程 三、线程池配置参数与优化 四、总结:线程

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三