本博客通过VMware workstation创建了虚拟机console,然后在console内部创建了8台kvm虚拟机,使用这8台虚拟机作为集群,来部署配置和测试slurm任务调度系统。
console虚拟机配置为:4核心CPU,8G内存,20G系统盘安装OS,20G数据盘挂载到/opt,10G数据盘挂载到/home,一块NAT网卡模拟带外,一块Host only网卡模拟专用内网
在使用console部署8台kvm虚拟机之后,需要做一下操作:
部署console到node11-18的免密码登陆,通过sshpass+shell实现
部署console为NTP服务器,同步node11-18的时间到console
部署console为LDAP服务器,能够实现全局用户认证
格式化数据盘,将/opt和/home通过NFS共享给node11-18
注:
上面这部分内容涉及较多,如VMware workstation部署虚拟机console,console虚拟机部署kvm虚拟机,创建并挂载NFS全局文件系统,console到多节点的免密码登陆,NTP和LDAP服务部署等,这里不做一一详述。
将console部署为NTP服务器之后,通过定时执行同步任务来保证所有节点时间一致:
pdsh -w node[11-18] ntpdate 192.168.80.8
将该命令写入定时任务:
crontab -e
munged-0.5.12
slurm-16.05.3(该软件包因为安全漏洞问题,已经无法下载,可下载其他版本)
1.创建安装目录:
mkdir -p /opt/munge/munge-0.5.12
2.解压:
unzip munge-munge-0.5.12.zip
3.编译:
cd munge-munge-0.5.12
./configure --prefix=http://www.likecs.com/opt/munge/munge-0.5.12 --sysconfdir=http://www.likecs.com/opt/munge/munge-0.5.12/etc --localstatedir=http://www.likecs.com/var
make && make install
注:
此时编译报错:
checking which cryptographic library to use... failed
configure: error: unable to locate cryptographic library
解决如下:
yum -y install openssl openssl-devel
此时可以在/opt/munge/munge-0.5.12下,查看到munge的各类目录
5.配置munge我希望munged在运行的时候,以root用户的身份运行(默认是munge用户),此时需要修改配置。
1.创建munge.key,并修改权限:
cd /opt/munge/munge-0.5.12/etc
echo "helloeveryone,I'ammungekeyonkvmcluster." >munge.key && chmod 600 munge.key
这里munge.key可以手动创建,但是必须保证其内容在32个字节以上,且文件权限为600方可
2.在所有需要部署slurmd的节点上创建munged运行需要的目录
pdsh -w node[11-18] mkdir -p /var/{log,run,lib}/munge
假如这三个目录为全局目录,即安装在/opt上的话,则节点不能够同时启动munged
3.修改munge运行的进程用户为root
cd /opt/munge/munge-0.5.12/etc/rc.d/init.d
vim munge编辑内容如下:
4.修改启动脚本的配置文件
vim /opt/munge/munge-0.5.12/etc/sysconfig/munge,内容如下:
5.创建添加环境变量的脚本,拷贝到其他节点
vim /etc/profile.d/optenv.sh
拷贝至其他节点:
for i in $(seq 11 18) do scp /etc/profile.d/optevn.sh node$i:/etc/profile.d/ done6.节点启动munged
pdsh -w node[11-18] munged
pdsh -w node[11-18] ps -ef|grep munge|grep -v grep
1.创建安装目录:
mkdir -p /opt/slurm/slurm-16.05.3
2.编译安装
./configure \ --prefix=http://www.likecs.com/opt/slurm/slurm-16.05.3/ \ --sysconfdir=http://www.likecs.com/opt/slurm/slurm-16.05.3/etc --with-munge=http://www.likecs.com/opt/munge/munge-0.5.12/make && make install
3.创建其他所需目录
cd /opt/slurm/slurm-16.05.3 && mkdir etc log state
etc:用于放置slurmctld,slurdbd的配置文件
log: 用于存放slurmctld,sluedbd的日志文件
state:用户存放作业状态的目录
4.创建slurmadmin用户,并修改相应目录权限
chown -R slurmadmin:slurmadmin state && chmod 777 log
创建slurm.conf,内容如下:
#slurm集群名称 ClusterName=myslurm #slurm主控制器主机名 ControlMachine=node11 #slurm从控制器主机名 BackupController=node12 #slurm进程用户 SlurmUser=slurmadmin #slurmd节点守护进程用户 SlurmdUser=root #slurmctld控制器端口 SlurmctldPort=6817 #slurmd节点守护进程端口 SlurmdPort=6818 #slurm通信认证 AuthType=auth/munge SwitchType=switch/none MpiDefault=none #slurm任务状态保存目录 StateSaveLocation=http://www.likecs.com/opt/slurm/slurm-16.05.3/state #slurmd守护进程日志保存 SlurmdSpoolDir=http://www.likecs.com/var/log/slurmd #slurmctld的pid存放 SlurmctldPidFile=http://www.likecs.com/var/run/slurmctld.pid #slurmd守护进程的pid文件存放 SlurmdPidFile=http://www.likecs.com/var/run/slurmd.pid TaskPlugin=task/cgroup ProctrackType=proctrack/cgroup #第一个jobid号 FirstJobId=1000 #最大的jobid号 MaxJobId=50000 ReturnToService=2 SlurmctldTimeout=300 SlurmdTimeout=300 TCPTimeout=10 InactiveLimit=0 MinJobAge=300 KillWait=30 Waittime=0 SchedulerType=sched/backfill SelectType=select/linear FastSchedule=1 DebugFlags=NO_CONF_HASH SlurmctldDebug=3 #slurmctld控制器守护进程的日志存放,全局文件系统 SlurmctldLogFile=http://www.likecs.com/opt/slurm/slurm-16.05.3/log/slurmctldlogfile SlurmdDebug=3 #slurmd节点守护进程的日志文件,节点本地 SlurmdLogFile=http://www.likecs.com/var/log/slurmdlogfile #slurm运行插件的路径 PluginDir=http://www.likecs.com/opt/slurm/slurm-16.05.3/lib:/opt/slurm/slurm-16.05.3/lib/slurm #jod限制类型 JobAcctGatherType=jobacct_gather/cgroup #计费等配置 #采用slurmdbd守护进程进行存储 AccountingStorageType=accounting_storage/slurmdbd #运行slurmdbd进程的节点主机名 AccountingStorageHost=node11 #slurmdbd运行节点的端口 AccountingStoragePort=6819 AccountingStorageEnforce=limints,qos #account存放的库 AccountingStorageLoc=slurm_acct_db #运行slurmdbd的数据库用户 AccountingStorageUser=slurmadmin AccountingStoragePass=http://www.likecs.com/var/run/munge/munge.socket.2 AcctGatherNodeFreq=180 #资源配置,包括节点配置,队列(分区)配置等 NodeName=node[11-18] CPUs=4 RealMemory=300 sockets=2 CoresPerSocket=2 ThreadsPerCore=1 State=UNKNOWN PartitionName=q_x86_1 Nodes=node[11-18] MaxTime=INFINITE State=UP DEFAULT=YES AllowAccounts=ALL