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.mfbz.cn/a/210582.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

今天给大家分享一套Python入门基础测试题,大家看看都会做吗?

今天给大家分享一套Python入门基础测试题,大家看看都会做吗? 一、测试题 1. 正确下载Anaconda平台或Python安装包并成功安装。 2. 掌握Python注释与print()和input()两个函数的用法,并作答以下选择题(不定项选择,正…

【UGUI】事件侦听EventSystem系统0学

前言介绍 EventSystem是Unity UGUI中的一个重要组件,用于处理用户输入事件,如点击、拖拽、滚动等。它负责将用户输入事件传递给合适的UI元素,并触发相应的事件回调函数(就是你想要做的事情,自定义函数)。 …

学生备考护眼灯哪个牌子好?值得入手的护眼台灯推荐

护眼台灯作为这几年人们很关注的电器产品,家里有孩子或者是经常面对电子设备的人士,相信都会对其有所了解并且购买了护眼台灯,但是还有些家长对护眼台灯的认知不够深,以至于还没有给孩子安排上护眼台灯,还在疑惑护眼台…

[ 蓝桥杯Web真题 ]-年度明星项目

目录 引入 介绍 准备 目标 效果 规定 思路 知识补充 解答参考 引入 hello,大家好!我注意到了之前发的一篇蓝桥杯Web应用开发的文章是关注度最高的,可能大部分关注我的小伙伴对蓝桥杯Web应用开发比较感兴趣,或者想要参加…

利用Python中的Manim进行数学绘画和创作

相信很多同学就算没听过3Blue1Brown,也一定曾看过他们出品的视频,其从独特的视觉角度解说各种数学概念,内容包括线性代数、微积分、神经网络、傅里叶变换以及四元数等晦涩难懂的知识点。例如最火的《线性代数本质》系列视频。 那么这些视频是…

Fiddler抓包工具之fiddler的命令行窗口用法

fiddler的命令行窗口的相关命令 在fiddler官网有QuickExec使用教程,地址是QuickExec Reference - Fiddler Classic QuickExec 命令行窗口位于fiddler左下角黑色输入框,如下图: 按ALT Q,将焦点快速设置到QuickExec框。如果Fiddl…

【问题解决】Linux内核编译安装后磁盘空间已满问题

Linux内核编译安装后磁盘空间已满问题解决过程 【注】本文为个人遇到Linux内核经过make,make modules……乃至最后install以后VMware磁盘空间爆炸的情况后,而又不想重装虚拟机,自己找资料实现解决的,文章中很多链接是来自别的博主…

CGAL的三维曲面网格生成

1、介绍 此程序包提供了一个函数模板,用于计算三角网格,以近似表面。 网格化算法要求仅通过一个能够判断给定线段、直线或射线是否与曲面相交,并且如果相交则计算交点的oracle来了解待网格化的表面。这一特性使该软件包具有足够的通用性&…

欧洲各国及发达国家经济支柱和第一出口商品是什么

工业在欧洲各国经济支柱中的表现 一般发达国家,像西欧的国家第三产业即服务业占GDP70%甚至更高,从业人数比重也最大,只是越发达的国家服务业的知识性和科技含量会更高,如商业咨询、律师、医疗卫生、科技服务、商业服务。服务业的…

Hdoop学习笔记(HDP)-Part.07 安装MySQL

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

人工智能原理复习--确定性推理

文章目录 上一篇推理概述自然演绎推理合适公式 归结演绎推理归结原理归结反演 提升归结效率下一篇 上一篇 人工智能原理复习–知识表示(二) 推理概述 推理就是按某种策略由已知判断推出另一判断的思维过程 分类: 演绎推理、归纳推理、默…

2023年第十二届数学建模国际赛小美赛C题雪崩防范求解分析

2023年第十二届数学建模国际赛小美赛 C题 雪崩防范 原题再现: 雪崩是极其危险的现象。现在,我们对雪崩是如何形成的已经有了很好的理解,但是我们还不能详细地预测雪崩发生的原因、时间和地点。村庄和道路可以通过各种方式防止雪崩。避免在脆…

浅析SD-WAN企业组网部署中简化网络运维的关键技术

网络已经成为现代企业不可或缺的基础设施,它为企业提供了连接全球的桥梁。随着全球化和数字化转型的加速推进,企业面临着越来越多的网络挑战和压力。传统的网络组网方式往往无法满足企业规模扩大、分支机构增多、上云服务等需求,导致网络性能…

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

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

saltstack启用IPV4切、IPV6双栈支持

随着生产系统业务陆续从IPV4切换到IPV6,集中化运维工具saltstack也需要启用双栈支持,以便无缝过渡到IPV6单栈运行。本文记录了saltstack从IPV4切换到IPV6双栈运行需调整的调置。 一、组网现状 因管理的服务器太多,目前采用了多master部署模…

基于c#+mysql+winform学生成绩管理系统-实践作业

基于c#mysqlwinform学生成绩管理系统-实践作业 一、系统介绍二、功能展示四、其它1.其他系统实现五.获取源码 一、系统介绍 分老师与学生两个界面; 老师能查看学生信息并评价,添加,删除学生; 老师能查看学生成绩并修改&#xff0…

pyqt5使用pyqtgraph实现动态热力图

pyqt5使用pyqtgraph实现动态热力图 一、效果图 二、流程 1、打开Designer创建一个UI界面 2、把UI转成py 3、创建一个main.py文件 4、在main文件中渲染画布、创建初始数据、画热力图、创建更新数据线程、绑定按钮触发事件三、UI界面 其中h_map.py代码如下: # -*- coding: ut…

【Python3】【力扣题】383. 赎金信

【力扣题】题目描述: 题解: 两个字符串ransomNote和magazine,ransomNote中每个字母都在magazine中一一对应(顺序可以不同)。 即分别统计两个字符串中每个字母出现的次数,ransomNote中每个字母的个数小于等…

在vue3项目嵌套 导入老项目 jQuery项目,减少重复开发

背景: 公司管理平台项目一直是前辈用jQuery做的,为扩展根据自身的技术栈,将jQuery的老项目嵌套入vue3的框架,新功能用vue开发,旧的功能不动直接在vue3用iframe容器来展示 嵌套步骤 2种方式嵌套,一个是已…

基于Java+Swing+Mysql图书管理系统(含实训报告)

基于JavaSwingMysql图书管理系统-含实训报告 一、系统介绍二、功能展示1.用户登陆 四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看登录界面、主页界面、图书类别管理、用户借阅记录、用户图书查询、用户图书归还、用户信息修改。 运行环境:idea、jd…