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

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Java服务实现开启Debug远程调试

《Java服务实现开启Debug远程调试》文章介绍如何通过JVM参数开启Java服务远程调试,便于在线上排查问题,在IDEA中配置客户端连接,实现无需频繁部署的调试,提升效率... 目录一、背景二、相关图示说明三、具体操作步骤1、服务端配置2、客户端配置总结一、背景日常项目中,通常我们的代码都是部署到远程

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po