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

相关文章

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Logback在SpringBoot中的详细配置教程

《Logback在SpringBoot中的详细配置教程》SpringBoot默认会加载classpath下的logback-spring.xml(推荐)或logback.xml作为Logback的配置... 目录1. Logback 配置文件2. 基础配置示例3. 关键配置项说明Appender(日志输出器

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一