初衷

首先,slurm搭建的初衷是为了将我多个GPU机器连接起来,从来利用多台机器的计算能力,提高计算效率,之前使用过deepops去搭建,结果最后好像deepops对GPU的卡有要求,我的每台机器卡都不一样,所以后面就开始研究slurm集群的方式了。

1、参考文档

之前参考过诸多文档,中间会出现各种奇怪的错误,后来还是通过docker的方式去装才成功,不通过docker的还在探索中,以后成功会出新视频。

(1)官网文档

slurm官网

(2)git上docker集群

docker集群

(3)操作系统集群(未成功)

操作系统集群

2、搭建步骤

2.1 三个镜像

搭建的时候,其实完全按照docker集群的方式就可以,这个过程需要用到三个镜像centos:7,mysql:5.7,slurm-docker-cluster_19.05.1.tar,我已经搭建完了,镜像会上传到资源,资源位置:slurm镜像包。

2.2 文件配置

其实,启动docker集群的时候,最主要的一步就是各种配置文件,我的配置文件如下:

(1)slurm.conf

# slurm.conf
#
# See the slurm.conf man page for more information.
#
ClusterName=linux
ControlMachine=slurmctld
ControlAddr=slurmctld
#BackupController=
#BackupAddr=
#
SlurmUser=slurm
#SlurmdUser=root
SlurmctldPort=6817
SlurmdPort=6818
AuthType=auth/munge
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
StateSaveLocation=/var/lib/slurmd
SlurmdSpoolDir=/var/spool/slurmd
SwitchType=switch/none
MpiDefault=none
SlurmctldPidFile=/var/run/slurmd/slurmctld.pid
SlurmdPidFile=/var/run/slurmd/slurmd.pid
ProctrackType=proctrack/linuxproc
#PluginDir=
CacheGroups=0
#FirstJobId=
ReturnToService=0
#MaxJobCount=
#PlugStackConfig=
#PropagatePrioProcess=
#PropagateResourceLimits=
#PropagateResourceLimitsExcept=
#Prolog=
#Epilog=
#SrunProlog=
#SrunEpilog=
#TaskProlog=
#TaskEpilog=
#TaskPlugin=
#TrackWCKey=no
#TreeWidth=50
#TmpFS=
#UsePAM=
#
# TIMERS
SlurmctldTimeout=300
SlurmdTimeout=300
InactiveLimit=0
MinJobAge=300
KillWait=30
Waittime=0
#
# SCHEDULING
SchedulerType=sched/backfill
#SchedulerAuth=
#SchedulerPort=
#SchedulerRootFilter=
SelectType=select/cons_res
SelectTypeParameters=CR_CPU_Memory
FastSchedule=1
#PriorityType=priority/multifactor
#PriorityDecayHalfLife=14-0
#PriorityUsageResetPeriod=14-0
#PriorityWeightFairshare=100000
#PriorityWeightAge=1000
#PriorityWeightPartition=10000
#PriorityWeightJobSize=1000
#PriorityMaxAge=1-0
#
# LOGGING
SlurmctldDebug=3
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=3
SlurmdLogFile=/var/log/slurm/slurmd.log
JobCompType=jobcomp/filetxt
JobCompLoc=/var/log/slurm/jobcomp.log
#
# ACCOUNTING
JobAcctGatherType=jobacct_gather/linux
JobAcctGatherFrequency=30
DebugFlags=CPU_Bind,gres
#
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageHost=slurmdbd
AccountingStoragePort=6819
AccountingStorageLoc=slurm_acct_db
#AccountingStoragePass=
#AccountingStorageUser=
#
# COMPUTE NODES
#
NodeName=c1  RealMemory=30000 State=UNKNOWN
NodeName=c3  RealMemory=30000 State=UNKNOWN
GresTypes=gpu
NodeName=c2  Gres=gpu:1  CPUs=4  RealMemory=30000 State=UNKNOWN
#
# PARTITIONS
PartitionName=normal Default=yes Nodes=c[1-3] Priority=50 Nodes=ALL Shared=NO  MaxTime=5-00:00:00 DefaultTime=5-00:00:00 State=UP

如上,我配置了三个节点,按照git上面的说明,其他他启动集群的时候只是启动了三个容器,每个容器其实认为是一个机器,但是实际上是在同一台物理机上面运行的,所以,我自己加了一个c3,c3其实表示的是一个真实的物理机,c3上面启动的是一个容器。

2.3 master物理机文件配置

前面说了,我现在一共是三个计算节点,c1、c2在机器A上面,c3在B上面,那么A机器上的各种配置文件如下。

(1)docker-compose.yml

version: "2.3"services:mysql:image: mysql:5.7hostname: mysqlcontainer_name: mysqlenvironment:MYSQL_RANDOM_ROOT_PASSWORD: "yes"MYSQL_DATABASE: slurm_acct_dbMYSQL_USER: slurmMYSQL_PASSWORD: passwordvolumes:- var_lib_mysql:/var/lib/mysql- /etc/hosts:/etc/hostsports:- "3306:3306"slurmdbd:image: slurm-docker-cluster:19.05.1command: ["slurmdbd"]container_name: slurmdbdhostname: slurmdbdvolumes:- etc_munge:/etc/munge- etc_slurm:/etc/slurm- var_log_slurm:/var/log/slurm- /etc/hosts:/etc/hostsexpose:- "6819"ports:- "6819:6819"depends_on:- mysqlslurmctld:image: slurm-docker-cluster:19.05.1command: ["slurmctld"]container_name: slurmctldhostname: slurmctldvolumes:- etc_munge:/etc/munge- etc_slurm:/etc/slurm- slurm_jobdir:/data- var_log_slurm:/var/log/slurm- /ml/home/mcldd/slurm/slurm-docker-cluster/slurm.conf:/etc/slurm/slurm.conf- /ml/home/mcldd/slurm/slurm-docker-cluster/gres.conf:/etc/slurm/gres.conf- /etc/hosts:/etc/hosts#- /ml/home/mcldd/slurm/slurm-docker-cluster/cgroup.conf:/etc/slurm/cgroup.conf- /dev/:/dev/deploy:resources:reservations:devices:- driver: nvidiadevice_ids: ['1']capabilities: [gpu]expose:- "6817"ports:- "6817:6817"depends_on:- "slurmdbd"c1:image: slurm-docker-cluster:19.05.1command: ["slurmd"]hostname: c1container_name: c1volumes:- etc_munge:/etc/munge- etc_slurm:/etc/slurm- slurm_jobdir:/data- var_log_slurm:/var/log/slurm- /ml/home/mcldd/slurm/slurm-docker-cluster/slurm.conf:/etc/slurm/slurm.conf- /etc/hosts:/etc/hostsexpose:- "6818"depends_on:- "slurmctld"c2:image: slurm-docker-cluster:19.05.1command: ["slurmd"]hostname: c2container_name: c2volumes:- etc_munge:/etc/munge- etc_slurm:/etc/slurm- slurm_jobdir:/data- var_log_slurm:/var/log/slurm- /ml/home/mcldd/slurm/slurm-docker-cluster/slurm.conf:/etc/slurm/slurm.conf- /ml/home/mcldd/slurm/slurm-docker-cluster/gres.conf:/etc/slurm/gres.conf#- /ml/home/mcldd/slurm/slurm-docker-cluster/cgroup.conf:/etc/slurm/cgroup.conf- /dev/:/dev- /etc/hosts:/etc/hostsdeploy:resources:reservations:devices:- driver: nvidiadevice_ids: ['1']capabilities: [gpu]expose:- "6818"depends_on:- "slurmctld"volumes:etc_munge:etc_slurm:slurm_jobdir:var_lib_mysql:var_log_slurm:

如上,此处需要注意,docker-compose调用gpu的时候版本必须是1.28.0+,所以你可以先按照下面操作看看是否符合,不符合要升级,还有就是docker-compose.yml的版本号上面是2.3.

(2)gres.conf

NodeName=c2 Name=gpu File=/dev/nvidia1 CPUs=2

如上,这个配置文件是用于调GPU的,吸引在File上面指定gpu设备地址,一般几块卡就有几个nvidia名字,所以可以看到docker-compose.yml里面c2节点也需要把这个文件给映射进去。

(3)hosts

127.0.0.1   titanrtx2
10.33.43.19 c3

如上,需要在master机器上配置c3的ip地址,然后通过docker挂载进去,他就能找到c3了,另外,很重要一点就是,他们通讯,有时候是需要打开端口号和关闭防火墙的,这一点要保证,不然可能无法连上。

2.3 c3物理机文件配置

c3是单独的一台机器,他与master交流需要通过端口和hostname去找,所以他的配置和主文件稍有不同。

(1)docker-compose.yml

version: "2.3"services:c3:image: slurm-docker-cluster:19.05.1command: ["slurmd"]hostname: c3container_name: c3volumes:- etc_munge:/etc/munge- etc_slurm:/etc/slurm- slurm_jobdir:/data- var_log_slurm:/var/log/slurm- /etc/hosts:/etc/hosts- /ml/home/mcldd/slurm/slurm-docker-cluster/slurm.conf:/etc/slurm/slurm.confexpose:- "6818"ports:- "6818:6818"volumes:etc_munge:etc_slurm:slurm_jobdir:var_lib_mysql:var_log_slurm:

(2)hosts

10.33.43.27 slurmctld c1 c2
::1 localhost6 localhost6.localdomain

看上面,需要把c1,c2和slurmctld的地址都配上 ,其他文件都和master一致了,完成后,启动即可。

3、启动步骤

3.1 启动master

启动:

日志:

3.2 启动c3

启动:

日志:

 4、测试任务分配步骤

# 执行命令
srun -N 3 hostname
# 返回结果
c1
c2
c3
# gpu调用
此部分后期再研究,基本上都可以,但是分配节点的时候版本容易不匹配

slurm-gpu集群搭建详细步骤相关推荐

  1. Hadoop集群搭建详细步骤大全

    0- Hadoop运行环境搭建 1.1,安装虚拟机 1)安装虚拟机 IP地址192.168.10.100.主机名称hadoop100,4G.硬盘50G (安装vm和光盘,注意放在内存大的硬盘上) (1 ...

  2. 全网最详细的ambari集群搭建详细步骤

    目录 1.服务器环境说明 2.防火墙设置 3.禁用selinux 4.配置jdk和mysql驱动 5.安装Mysql 6.mysql密码操作 7.安装httpd服务 8.安装ntp 9.ntp配置 1 ...

  3. redis3.0.0 集群安装详细步骤

    2019独角兽企业重金招聘Python工程师标准>>> redis3.0.0 集群安装详细步骤 博客分类: 缓存 Redis集群部署文档(centos6系统) (要让集群正常工作至少 ...

  4. redis3.0.2 分布式集群安装详细步骤

    redis3.0.2 分布式集群安装详细步骤 --(centos5.8 X64系统) 版本历史 时间 版本 说明 编写者 2015-06-5 1.0 redis3.0.2 分布式集群安装详细步骤 cs ...

  5. tidb 集群部署详细步骤

    tidb 集群部署详细步骤 一.准备工作 1. 四台服务器(开通外网) 117.50.96.236 centos 7.3 64位 117.50.96.235 centos 7.3 64位 117.50 ...

  6. slurm作业调度集群搭建及配置

    目录 一  环境准备 二 时间同步 三  munge认证 四 数据库安装 五 slurm搭建 六  集群用户管理和初始化配置 qos配置 一  环境准备 主机规划 master  192.168.22 ...

  7. 转:Redis 集群搭建详细指南

    转自: https://www.cnblogs.com/mafly/p/redis_cluster.html [README] 非常棒的一篇文章,感谢作者的分享: 先有鸡还是先有蛋? 最近有朋友问了一 ...

  8. Hadoop完全分布式集群搭建详细图文教程

    本文所使用的环境及版本: CentOS Linux release 7.9.2009 (Core) jdk1.8.0_291 hadoop-3.2.2 一.安装模板机 1.安装CentOS 7.9并配 ...

  9. SpringCloud--Eureka服务注册与发现 Eureka 集群搭建 详细案例!!!

    SpringCloud组件--Eureka 完整笔记 一.Eureka基础知识 1.1.什么是服务治理 ? 1.2. 什么是服务注册与发现? 1.3.Eureka两组件:Eureka Server和E ...

最新文章

  1. 避免成为垃圾邮件_如何避免犯垃圾
  2. R语言绘制空白图实战
  3. Tomcat绿色版启动startup.bat一闪问题的解决方法!
  4. 这 8 篇文章告诉你:未来的软件研发是怎样的?
  5. python中单例模式是什么_python中的单例模式
  6. 有了解过Elasticsearch的性化搜索方案吗?
  7. 史上最低价Surface!微软Surface Laptop Go上架 3700元起
  8. 2020 年了,不知道这些还怎么做区块链工程师?
  9. 深度学习自学(三十八):基于交互式双流解码器图像显著性检测
  10. 全网首发:(解决办法)MAC OS Xcode给应用设置沙箱(Enable App Sandbox)之后,运行报错Illegal instruction: 4
  11. php获取cookie值的方法,怎么获取cookie的值
  12. springboot连接redis进行CRUD
  13. asan c/c++内存检测
  14. 牛腩——遇到的问题总结
  15. android app调用第三方地图路线规划导航(百度,高德,腾讯)
  16. origin如何绘制双y轴曲线_origin怎样画双y轴 看完恍然大悟
  17. iGrimace iOS7-Ios8-ios一键新机 系统 NZT NEO 非V8锤子IG基本操作全教程:v3 v8
  18. log4j2 漏洞的简单利用
  19. 如何挑选一款合适的手机用于开发呢?
  20. 使用空密码的本地帐户只允许进行控制台登陆_在群晖中运行Windows是什么样体验?教你VMM虚拟机简单使用...

热门文章

  1. 基于XSS的网页篡改,网页劫持,网页钓鱼
  2. 《静儿的服务治理私房菜》服务治理概述
  3. 为什么获取crm服务器信息失败,CRM项目失败的七大原因
  4. 基于差分进化算法的微电网调度研究(Matlab代码实现)
  5. 新书《区块链实战》中信出版:破除迷思 推动技术落地 | ArcBlock 新闻
  6. HTML- CSS-对齐-居中解决办法---kalrry
  7. mysql 可变字符串_MySQL:字符串类型
  8. 长尾理论在网络营销中的应用
  9. 地狱男爵 Hellboy ---- 超级烂的片子
  10. 一位南航研究生的呐喊