都8102年了,还有人在CentOS6.4上安装Slurm2.6.0?!

MUNGE各版本下载
SLURM各版本下载

开始安装

  1. 以root身份登录控制节点node01,将munge和slurm两个安装包,分别拷贝到/opt下新建的munge-0.5.11和slurm-2.6.0文件夹下。
  2. 首先安装munge。进入munge-0.5.11文件夹,用以下命令编译、安装munge:
# ./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安装完成。

  1. 然后开始安装slurm

首先在控制节点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等具体信息,如图:
都8102年了,还有人在CentOS6.4上安装Slurm2.6.0?!_第1张图片

暂时关闭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条链接。

参考链接:

  1. https://blog.csdn.net/kongxx/article/details/48173829
  2. https://bugs.schedmd.com/show_bug.cgi?id=323
  3. https://github.com/dun/munge/issues/8
  4. https://blog.csdn.net/envy13/article/details/73195327
  5. http://blog.sina.com.cn/s/blog_61b8694b0101l69l.html

装后感:为了节省大家时间(可能也并没有人会来看,嘤嘤嘤?),把废话写在后面。花了两个多礼拜,把上面这一点点内容终于理顺了。最大的感悟就是:不会没关系,有问题也没关系,只要在网上能找到同样的问题,那都不是问题。一开始找到了CentOS6.5安装SLURM的博客,很是开心,心想着6.4、6.5差不多的嘛。然鹅,呵呵?,人家还能用14.11.8那个版本,到我这,一堆问题。。。只找到了一个相似情况,嗯,人家官方解答是版本的关系,我。。。翻出了2.6.0这古董,心存一丝丝hope,折腾半天,终于搞定了node01。之后,slurm.conf文件又折腾了好久,心累?。集群售后工程师他们只会装PBS,后来因为/var/spool权属被我改成slurm导致PBS开启失败,还劝我别乱动?。总而言之,虽然只是安装软件的事,但真的很繁琐,这时有能沟通的同伴就起到了非常积极的作用,即使不能直接解决问题,也能够在讨论中获得启发。当然,最重要的还是靠自己。

你可能感兴趣的:(Linux)