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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/190960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用C语言创建高性能爬虫ip网络

之前写的python和GO语言的爬虫ip池的文章引起很大反响,这次我将以C语言来创建爬虫IP池,但是因为其复杂性,可能代码并非完美。但是最终也达到的想要的效果。 因为在C语言中创建代理IP池可能会比较复杂,且C语言并没有像Python那样的…

07-原型模式-C语言实现

原型模式: Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype.(用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象。 ) UML图&#xff1…

关于 Kubernetes中Admission Controllers(准入控制器) 认知的一些笔记

写在前面 工作中遇到,简单整理记忆博文为官方文档整理涉及内置准入控制的分类理解理解不足小伙伴帮忙指正 人活着就是为了忍受摧残,一直到死,想明了这一点,一切事情都能泰然处之 —— 王小波《黄金时代》 为什么需要准入控制器 准…

非得让你会之MyBatis插件与Java动态代理

引言 咱们今天聊聊Java动态代理,这东西在开发中真的太常见了。比如Spring AOP、RPC,它们都离不开动态代理。然后,咱们再来说说MyBatis插件,这可是MyBatis框架中的一个超实用的功能,它就像是给MyBatis加了个“超能力”…

『测试基础』| 如何理解测试用例管理和缺陷管理?

『测试管理攻略』| 如何理解测试用例管理和缺陷管理? 1 测试用例定义2 测试用例设计原则3 测试用例的评审4 测试如何维护?5 用例的作用6 用例管理工具7 缺陷关注的重点8 缺陷分析9 缺陷管理工具 1 测试用例定义 测试用例(TestCase&#xff0…

西南科技大学(数据结构A)期末自测练习四

一、填空题(每空1分,共10分) 1、树最适合用来表示( C ) A.有序数据元素 B.无序数据元素 C.元素之间具有层次关系的数据 D.元素之间具有多对多关系的数据 2、根据二叉树的定义可知二叉树共有( B)种不同的基本形态…

react 面试题 50题 大公司常问的面试

1. 请解释 React 是什么以及它的主要特点。 2. 请解释 React 中的虚拟 DOM(Virtual DOM)以及它的工作原理。 3. 请解释 React 中的组件(Components)以及它们如何工作。 4. 请解释 React 中的生命周期方法(Lifecycle Me…

Zabbix监控openstack系统资源

一、简介 随着信息技术的不断发展,作为基础平台,封闭架构带来不兼容性,无法支持异构虚拟机系统,也难以支撑开放合作的产业链需求。随着云计算时代的来临,虚拟化管理平台向开放平台架构转变,多种厂家的虚拟机可以在开放的平台架构下共存,不同的应用厂商可以基于开放…

12.1平衡树(splay),旋转操作及代码

平衡树 变量定义 tot表示结点数量,rt表示根的编号 v[i]表示结点i的权值 fa[i]表示结点i的父亲节点 chi[i][2]表示结点i的左右孩子 cnt[i]表示结点i的权值存在数量,如1123,v[3]1,则cnt[3]2;就是说i3的三号结点的权值为1&…

备忘录模式-C++实现

备忘录是一种行为型设计模式,它允许在不破坏封装性的前提下捕获和恢复一个对象的内部状态。它将对象的内部状态保存到备忘录对象中,并在需要的时候从备忘录中取出恢复状态,实现了状态的保存和恢复。 备忘录有以下三个角色: 1、发…

Mybatis-Plus条件构造器Wrapper

常用的两种条件构造器分别是 QueryWrapper 和 LambdaQueryWrapper QueryWrapper Autowiredprivate StudentMapper studentMapper;Testpublic void test() {//条件分页查询学生,性别为2(代表女),年龄大于等于12的学生QueryWrapper&…

树和二叉树的基本概念和堆的实现

树的概念及结构 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 1.有一个特殊的结点&#…

04-配置远程仓库的SSH免密登陆

配置SSH免密登录 配置步骤 创建好的远程仓库也可以使用SSH的方式进行访问,但如果没有配置公钥会有警告 第一步: 删除用户家目录下的.ssh目录,如果没有该目录或者该目录下已经有密钥了就不用执行该操作 #进入当前用户的家目录,删除.ssh 目录 LayneLAPTOP-Layne MINGW64 ~ $ r…

python datetime 获取特定一天的后一天或者后几天

这里写自定义目录标题 1 获取特定天的时间对象 具体时间格式参考:Python time strptime()和strftime()-CSDN博客 import datetimetimer datetime.datetime.strptime(date, "%Y-%m-%d")2 获取下一天或者【下x天】的数据并进行格式转换 # 下一天数据 ne…

基于SpringBoot+Vue的前后端分离的房屋租赁系统2

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 开发过程中&#xff0…

uniApp打包的手机app如果用户没开启通知权限、引导用户开启

封装一个setPermissions.js文件 /*** 如果用户没开启通知权限、引导用户开启 */ export function setPermissions() {// #ifdef APP-PLUS if (plus.os.name Android) {var main plus.android.runtimeMainActivity();var pkName main.getPackageName();var uid main.getApp…

基于WebSocket实现客户聊天室

目录 一、实现聊天室原理 二、聊天室前端代码 三、聊天室后端代码(重点) 四、聊天室实现效果展示 一、实现聊天室原理 1.1 介绍websocket协议 websocket是一种通信协议,再通过websocket实现弹幕聊天室时候,实现原理是客户端首…

Dynamo初学配置

配置参考 视频参考 Dynamo之Python编程视频教学_dynamo python-CSDN博客 升级Python3参考【需要Revit2020版本,2019版本不适用】 Dynamo 升级使用 Python3教程_dynamo升级找不到cpython-CSDN博客 Dynamo数据淘金——01//升级配置Dynamo - 哔哩哔哩 dynamo中pyt…

【动态规划】LeetCode-931.下降路径最小和

🎈算法那些事专栏说明:这是一个记录刷题日常的专栏,每个文章标题前都会写明这道题使用的算法。专栏每日计划至少更新1道题目,在这立下Flag🚩 🏠个人主页:Jammingpro 📕专栏链接&…

jira配置https访问-running-jira-applications-over-ssl-or-https

命令行配置步骤 Command line installation 过程说明: 创建存放证书的本地秘钥库keystore文件jira.jks,生成证书签名请求文件csr.txt或者jira.csr; 自签名,生成密钥和根证书; 使用根证书ca.crt对csr.txt进行签名&…