MUNGE各版本下载
SLURM各版本下载
开始安装
# ./configure --prefix=/usr --libdir=/usr/lib64 --sysconfdir=/etc --localstatedir=/var && make && sudo make install
安装完成后,需要修改下面这些文件的权限:
# chmod -Rf 700 /etc/munge
# chmod -Rf 711 /var/lib/munge
# chmod -Rf 700 /var/log/munge
# chmod -Rf 0755 /var/run/munge
新建用户“munge”:
# export MUNGEUSER=991
# groupadd -g $MUNGEUSER munge
# useradd -m -c "MUNGE Uid 'N' Gid Emporium" -d /var/lib/munge -u $MUNGEUSER -g munge -s /sbin/nologin munge
将以上文件夹更改权限为“munge”:
# chown -R munge: /etc/munge/ /var/log/munge/ /var/lib/munge/ /var/run/munge/
在控制节点node01上新建秘钥并设置权限:
# /usr/sbin/create-munge-key –r
# dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key
# chown munge: /etc/munge/munge.key
# chmod 400 /etc/munge/munge.key
将生成的秘钥发送到其余计算节点上:
(先以root身份逐个登录计算节点:node02、node03、node04、node05…以现有的集群名为准,在每个节点上/etc路径下新建munge文件夹)
# scp /etc/munge/munge.key root@node02:/etc/munge
在各个计算节点上重复生成秘钥之前的步骤,逐个安装munge,并修改各个文件夹及秘钥副本的权属和权限。
回到控制节点node01,启动munge服务:
# /etc/init.d/munge start(stop...)
转换到各计算节点,重复以上步骤,munge安装完成。
首先在控制节点node01上安装slurm,创建用户slurm:
# export SLURMUSER=992
# groupadd -g $SLURMUSER slurm
# useradd -m -c "SLURM workload manager" -d /var/lib/slurm -u $SLURMUSER -g slurm -s /bin/bash slurm
进入slurm-2.6.0文件夹,解压安装包:
# tar –xvf slurm-2.6.0-0rc1.tgz
进入解压得到的文件夹,找到slurm.spec文件,打开,更改第97行开始:
Name: slurm
Version: 2.6.0
Release: 0rc1
编译、安装:
# ./configure
# make install
安装完成后,修改下面路径的属组:
# sudo chown slurm:slurm /var/spool
(注意:事实证明,这一步只能存在于只安装了SLURM的集群,如果你的集群已经安装了PBS,那么。。。PBS会启动不了。以目前的情况来说,这个路径归root所有对SLURM并没有什么大问题。)
在安装文件夹下的/etc路径下,找到slurm.conf.example文件,复制副本并修改为:
# Example slurm.conf file. Please run configurator.html
# (in doc/html) to build a configuration file customized
# for your environment.
#
#
# slurm.conf file generated by configurator.html.
#
# See the slurm.conf man page for more information.
#
ClusterName=gentai
ControlMachine=node01
#ControlAddr=
#BackupController=
#BackupAddr=
#
SlurmUser=slurm
#SlurmdUser=root
SlurmctldPort=6817
SlurmdPort=6818
AuthType=auth/munge
#JobCredentialPrivateKey=
#JobCredentialPublicCertificate=
StateSaveLocation=/tmp
SlurmdSpoolDir=/tmp/slurmd
SwitchType=switch/none
MpiDefault=none
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmdPidFile=/var/run/slurmd.pid
ProctrackType=proctrack/pgid
#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/linear
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/slurmctld.log
SlurmdDebug=3
SlurmdLogFile=/var/log/slurmd.log
JobCompType=jobcomp/none
#JobCompLoc=
#
# ACCOUNTING
#JobAcctGatherType=jobacct_gather/linux
#JobAcctGatherFrequency=30
#
#AccountingStorageType=accounting_storage/slurmdbd
#AccountingStorageHost=
#AccountingStorageLoc=
#AccountingStoragePass=
#AccountingStorageUser=
#
# COMPUTE NODES
NodeName=node01 CPUs=64 RealMemory=56317 Sockets=2 CoresPerSocket=16 ThreadsPerCore=2 State=UNKNOWN
NodeName=node02 CPUs=32 State=UNKNOWN
NodeName=node03 CPUs=32 State=UNKNOWN
NodeName=node04 CPUs=36 State=UNKNOWN
NodeName=node05 CPUs=36 State=UNKNOWN
PartitionName=control Nodes=node01 Default=NO MaxTime=INFINITE State=UP
PartitionName=compute Nodes=node02,node03,node04,node05 Default=YES Priority=1 MaxTime=INFINITE State=UP
将副本命名为“slurm.conf”,复制到路径/usr/local/etc/slurm/下,权属都改为slurm。
此时,先启动node01上的slurm服务:
# /etc/init.d/slurm start(stop/restart/startclean)
使# sinfo
查看各节点状态,除了node01以外,其他节点state应为unknown或已转为down,因为此时其他节点还未安装slurm(手动?)
使用# scontrol show slurm reports
可以查看当前所在节点CPUs、RealMemory等具体信息,如图:
暂时关闭node01上slurm
根据以上信息,更改slurm.conf中node01的内容,保存。
以“startclean”方式重新打开slurm
再重新启动control服务并重新编译slurm.conf:
# slurmctld –c
# scontrol reconfigure
转换到其他计算节点上,以root身份解压、编译、安装slurm。
将node01上修改好的slurm.conf发送到各节点上:
# scp /usr/local/etc/slurm/slurm.conf root@node02:/usr/local/etc/slurm
各节点root身份开启slurm:
# slurmd –c
此时在计算节点上# sinfo
查看,可看到已安装好slurm的节点应该和node01一样,state为idle。
SLURM安装完成!
差点忘了一个很重要的问题!如果全部安装配置好后,除了控制节点外,其他节点state都是down或者有的down有的idle,那么很有可能,那些down的机器时间和控制节点的时间差的太多了,即时间不同步。请参考?第5条链接。
参考链接:
装后感:为了节省大家时间(可能也并没有人会来看,嘤嘤嘤?),把废话写在后面。花了两个多礼拜,把上面这一点点内容终于理顺了。最大的感悟就是:不会没关系,有问题也没关系,只要在网上能找到同样的问题,那都不是问题。一开始找到了CentOS6.5安装SLURM的博客,很是开心,心想着6.4、6.5差不多的嘛。然鹅,呵呵?,人家还能用14.11.8那个版本,到我这,一堆问题。。。只找到了一个相似情况,嗯,人家官方解答是版本的关系,我。。。翻出了2.6.0这古董,心存一丝丝hope,折腾半天,终于搞定了node01。之后,slurm.conf文件又折腾了好久,心累?。集群售后工程师他们只会装PBS,后来因为/var/spool权属被我改成slurm导致PBS开启失败,还劝我别乱动?。总而言之,虽然只是安装软件的事,但真的很繁琐,这时有能沟通的同伴就起到了非常积极的作用,即使不能直接解决问题,也能够在讨论中获得启发。当然,最重要的还是靠自己。