- Slrum官网
- Slurm安装
系统: Ubuntu 22.04
四个虚拟机充当四台计算机
Slurm版本:24.5
以下操作如果没有特别说明都是在四台机器中执行相同命令,Xshell可以在工具栏中的工具->发送键输入到->所有会话,这样就可以在一台机器上同时控制四台
没有特别说明的话,默认登录用户就是ROOT用户
安装一些基础软件
bzip2:解压缩时候需要
zlib1g-dev: pmix 和 openmpi好像是用到了,不安装也不会报错,但是运行mpirun的时候会有个提示,说是建议安装zlib
这个是配置时区
参考: Linux服务器时间同步chrony详解+案例
Chrony是网络时间协议(NTP)的实现。
- 使系统时钟与NTP服务器同步,
- 使系统时钟与参考时钟(例如GPS接收器)同步,要将系统时钟与手动时间输入同步,
- 作为NTPv4(RFC 5905)服务器或对等方以向网络中的其他计算机提供时间服务。
- Chrony在各种条件下都表现良好,包括间歇性网络连接,网络严重拥塞,温度变化(普通计算机时- - 钟对温度敏感)以及无法连续运行或在虚拟机上运行的系统。
NTP服务端
将node1 作为NTP服务端,在 [/etc/chrony/chrony.conf] 配置文件中添加以下内容
NTP客户端
在其它三个节点内的相应的配置文件中添加以下内容
如果有的网卡支持IPV6那么可能启动chrony服务时会报错,但是不影响启动
Could not open command socket on [::1]:323
要想消除这个错误需要修改以下脚本添加 -4 参数,表示只使用IPV4
参考:SSH的免密登录详细步骤
配置主机名与IP的映射
配置好以后可以通过ssh命令进行测试是否可以免密登录,如果不成功的话,注意目录和文件的权限问题
NFS服务端
NFS共享目录我打算在node2上安装,node2为共享服务端
创建共享NFS目录
编辑配置文件
/opt/share:指定/opt/share为nfs服务器的共享目录
*:允许所有的网段访问,也可以使用具体的IP
rw:挂接此目录的客户端对该共享目录具有读写权限
sync:资料同步写入内存和硬盘
root_squash: 当客户端以root用户访问时,映射为匿名用户
no_root_squash:root用户具有对根目录的完全管理访问权限,映射为root用户
no_subtree_check:不检查父目录的权限
重启nfs服务
NFS客户端
也就是除了node2节点的其它节点进行操作
安装NFS 客户端
创建共享挂载点
挂载共享目录
-t:挂载的文件系统类型
-o nolock:不要文件锁
192.168.xxx.xxx:/opt/share:nfs服务器ip:服务器共享目录
/opt/share:客户端共享目录挂载点
设置开机自动挂载
MUNGE(MUNGE Uid ‘N’ Gid Emporium)是一个用于创建和验证用户凭证的身份验证服务。它专为高性能计算(HPC)集群环境设计,旨在提供高度可扩展的身份验证解决方案。MUNGE 允许在共享安全域内的主机之间进行用户身份验证,而无需使用 root 权限、保留端口或平台特定方法。
- 下载地址
- 安装指南
添加munge用户,添加munge用户主要是为了启动munge这个服务的,因为系统服务文件中明确规定了的用户就是munge,如果以其它用户去启动的话会报错。
所以我想是不是更改这个服务文件中的用户名就可以呢?
暂时先按着其它文章中的操作做一遍, 为了保持munge的uid和gid在所有的节点上一致,创建时指定固定uid和gid,确保指定的uid和gid不存在即可
启动munge服务
这个图省事就直接使用apt进行安装了,mysql只在运行 slurmdbd 服务的节点上安装即可,我选择了node1节点。
后续启动 slurmdbd 服务时报错 slurmdbd: error: Database settings not recommended values: innodb_buffer_pool_size innodb_lock_wait_timeout
修改配置文件并添加以下内容,如果设置了1024M,查看 slurmdbd 服务还是报相关错误,则将值提高到 2048M
创建数据库用户
在mysql命令行界面查看数据库和用户是否成功
- OpenMPI
- Slurm官方MPI安装指南
如果想在Slurm集群中使用OpenMPI需要提前构建,在指南中指出想使用 srun 命令直接启动MPI需要指定PMIx库
在没有安装PMIx库的情况下安装了Slurm,使用srun命令查看mpi插件时将无法得到PMIx的信息
需要注意的是: 编译OpenMPI时如果使用了外部PMIx,则需要和PMIx使用相同的libevent 和 hwloc库,正好Slrum的cgroup插件也需要hwloc库,
所以编译OpenMPI一共要安装的库以下四个:
- hwloc
- libevent
- PMIx
- UCX
UCX库好像是利用高速网络进行通信的,支持RDMA的网卡好像是可以使用相应的API什么的。不安装UCX后续也不会报错,所以安不安都可以。
安装目录都是默认的 [/usr/local],没有自定义,后面编译Slurm时也好配置,不需要特别指定安装目录
- libevent官网
- PMIx操作指南
- UCX下载链接
- OpenMPI5.0下载链接
下载编译安装
在执行 https://blog.csdn.net/_/article/details/configure 后,确保输出的以下内容中的值是 external就可以了,最起码保证咱们之前安装的库用上了
hwloc: external
libevent: external
pmix: external
如果上面几个库安装时没有特别指定目录安装的话,不用指定 –with-xx 的,会在默认安装目录中 [/usr/local/] 下进行搜索的
Slurm中的cgroup 插件依赖于 dbus 和 hwloc 库,hwloc库在上面已经安装过了。
如果想源码编译dbus可以在 dbus 官网 中下载后进行安装
- https://www.schedmd.com/download-slurm
在上面网址中下载Slurm 源码包
安装pam开发库
Slurm编译源码
安装完成后拷贝源码目录 etc/ 中的Slurm相关服务到 /lib/systemd/system/ 目录
这些服务文件中有的默认的启动用户是slurm,可以直接修改服务文件内容为root用户,这样就不用新创建一个slurm用户了,确保所有节点使用的是同一个用户就可以了。
此服务文件在主节点中存在即可
修改该服务文件内容,将User和Group改为root用户
24.05版本的Slurm是支持无配置模式的,所以,slurm.conf配置文件只需要在主节点中创建即可
slurm安装默认是没有配置文件的,所有的配置文件都需要自己创建。
生成slurm.conf配置文件内容有两种方式,选择其中一种
- 1、可通过 Configurator tool 生成slurm.conf,在线生成的方式只适用于最新版本,如果安装的是其它版本应该使用源码中的doc/html/configurator.html构建
- 2、在源码文件中的etc/下有个slurm.conf.example示例配置文件拷贝到slurmctld.service服务文件中指定的目录中。
比如在slurmctld.service中指定了slurm.conf文件的位置是 /usr/local/etc/slurm.conf 那么就可以在相应的目录中创建slurm.conf文件。
此配置文件为slurm24.05版本,如果版本不一致,需要自行找到源码中的doc/html/configurator.html 进行构建
其中注释部分网络上摘抄,具体含义还是需要试验进行验证,如果进行了make install操作,可以在系统内执行 man slurm.conf 命令查看所有配置的具体解释
NodeName那一行的配置中,因为我配置的虚拟机分配的核心数比较少,根据slurmd -C 输出只能分配一个CPU核心给Slurm调度。
配置cgroup.conf, 与slurm.conf同一个目录, cgroup.conf官方解释
此服务文件在计算节点和登录节点中存在即可,我的登陆节点就是主节点所以四个节点都需要此文件。
因为选择了无配置启动,不需要在本地创建slurm.conf文件,使用主节点的配置即可
在 slurmd 服务文件中需要添加远程配置服务的参数 –conf-server node1:6817,这样计算节点启动时会去主节点同步 slurm.conf 配置文件
此服务文件在node1中存在,其它计算节点不需要这个服务
修改 [/lib/systemd/system/slurmdbd.service] 中的 User 和 Group 为 root
- slurmdbd.conf
根据 [/lib/systemd/system/slurmdbd.service] 中指定的配置文件位置添加slurmdbd.conf
- pam_slurm_adopt
后续还有很多配置,可以根据上方的链接进行配置。
根据官网图片中所示
管理节点需要启动 slurmctld、slurmdbd、munge 服务
计算节点需要启动 slurmd 、munge服务
如果以普通用户启动slurmctld服务时会提示你用什么用户进行验证,用root用户则不会提示。
因主节点中的 slurm.conf 配置文件中设置了无配置模式 SlurmctldParameters=enable_configless
所以计算节点不需要写配置文件了,启动计算节点服务后会同步到本机器内
- 两小时入门MPI与并行计算系列
- 一些例子
- Slurm提交OpenMPI作业
- MPI作业示例
在共享目录中编写一个简单的MPI程序
编译运行测试
默认使用当前节点并且创建了4个进程
-N:使用的节点数量,最大值3,因为只有三个计算节点
-n:要创建几个任务,一个任务就是一个进程,占据一个CPU核心
如果指定-N 1 不指定-n的数量时,会以当前计算节点的所有CPU核心数分配任务数量,也就是三个,但是要使用的节点数量为一个,一个计算节点内的CPU核心数是一个,此时会报错
也就是说任务数量不能超过: 要使用的节点的数量 X 分配好的CPU数量, 以下命令指定-n后成功运行
-w: 指定计算节点运行
- slurm安全设定 规避用户盗用资源的讨论
- slurm集群安装与踩坑详解
- Ubuntu22.04部署slurm GPU集群
- 北大高性能计算平台文档
- 上海交大超算平台用户手册
- 中国科大超算中心
- slurm使用参考
- Slurm资源管理与作业调度系统安装配置
- AWS ParallelCluster 3集成ANSYS CFD计算
- Slurm限制普通用户登陆计算节点(超算管理员必看)
- OpenScow-slurm部署简介
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/22000.html