Slurm Install

From CMU ITSC Network

การติดตั้ง

ทรัพยากรที่ใช้ในการติดตั้ง ประกอบไปด้วยเครื่องทั้งหมด 3 เครื่องโดยให้เครื่องแรกเป็น Headnode จะลง slurmctld, slurmdbd, slurmd ส่วนเครื่องที่เหลือเป็นเครื่อง computenode ลงแค่ตัว slurmd ทั้งหมดเป็น CentOS7

Hostname ip address
slurm-test-01 10.98.6.51
slurm-test-02 10.98.6.52
slurm-test-03 10.98.6.53

แนะนำให้ Login ด้วย Root ในการติดตั้ง เพราะบางคำสั่งจะติด Permission

เปลี่ยน Hostname และเพิ่ม Hosts

hostnamectl set-hostname slurm-test-01

เพิ่ม ip ลงในบรรทัดสุดท้าย

vi /etc/hosts

..
..
10.98.6.51  slurm-test01

Restart network แล้ว Login ใหม่

sudo systemctl restart network
hostnamectl status
exit

สร้าง Global users ให้กับทุก Node

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
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

ตรวจสอบว่าสร้าง user แล้ว

cat /etc/group | grep -e munge -e slurm
และ
cat /etc/passwd | grep -e munge -e slurm

ติดตั้ง Munge

Install REPL repository

yum install epel-release -y

Install Munge

yum install munge munge-libs munge-devel -y

สร้าง Secret key จากเครื่อง Headnode

dd if=/dev/urandom bs=1 count=1024 > /etc/munge/munge.key
chown munge: /etc/munge/munge.key
chmod 400 /etc/munge/munge.key

ก็อป key ไปยังเครื่องที่เหลือ

scp /etc/munge/munge.key root@10.98.6.52:/etc/munge/munge.key
scp /etc/munge/munge.key root@10.98.6.53:/etc/munge/munge.key

SSH ไปยังทุก Node เปลี่ยน Permission แล้วเริ่ม Munge service

chown -R munge: /etc/munge/ /var/log/munge/
chmod 0700 /etc/munge/ /var/log/munge/
systemctl enable munge
systemctl start munge

ทดสอบ Munge ว่าติดต่อไปยังเครื่องอื่นได้หรือไม่ โดยเข้าจาก Headnode

munge -n
munge -n | munge
munge -n | ssh 10.98.6.52 unmunge
remunge

ถ้าไม่เจอ error แสดงว่า Munge ทำงานได้ปกติ

ติดตั้ง Slurm

ติดตั้ง service ต่าง ๆ ที่ Slurm ต้องใช้งาน

yum install openssl openssl-devel pam-devel numactl numactl-devel hwloc hwloc-devel lua lua-devel readline-devel rrdtool-devel ncurses-devel man2html libibmad libibumad -y

ติดตั้ง NFS Server เพื่อ Share folder

NFS Server (Headnode)

สร้างโฟล์เดอร์ที่ต้องการแชร์ที่ไหนก็ได้ โดยในที่นี้จะสร้างไว้ใน /var/nfsshare

yum install nfs-utils -y
systemctl start nfs-server rpcbind
systemctl enable nfs-server rpcbind
mkdir /var/nfsshare
chmod -R 755 /var/nfsshare

ตั้งค่าให้ NFS ทำงานทุกครั้งเมื่อเปิดเครื่อง

systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap

Config ไฟล์สำหรับการแชร์

vi /etc/exports
/var/nfsshare    10.98.6.0/24(rw,sync,no_root_squash,no_all_squash)
exportfs -r
systemctl restart nfs-server

เพิ่ม NFS Service เข้าไปใน Firewall

firewall-cmd --permanent --zone=public --add-service=nfs
firewall-cmd --permanent --zone=public --add-service=mountd
firewall-cmd --permanent --zone=public --add-service=rpc-bind
firewall-cmd --reload
NFS Client (Compute node)

ไปยังเครื่องที่หลือแล้วลง NFS Client

yum install nfs-utils -y

เช็คโฟล์ดอร์ที่มีแชร์จากเครื่องหลัก

showmount -e 10.98.6.51

สร้าง Folder ที่ต้องการให้เห็นไฟล์ที่แชร์มา โดยในที่นี้จะให้เป็น Path เดียวกันกับเครื่อง Headnode พร้อม Mount เข้ามา

mkdir -p /var/nfsshare
mount -t nfs 10.98.6.51:/var/nfsshare /var/nfsshare
วิธี Mount แบบถาวร

ถ้าไม่ทำการ Mount แบบถาวร เมื่อปิดเครื่องแล้วเปิดใหม่ขึ้นมาตัว Folder ที่ Mount จะหายไป ทำให้ต้อง mount ใหม่ถ้าจะใช้งาน

vi /etc/fstab
10.98.6.51:/var/nfsshare /var/nfsshare nfs defaults 0 0
วิธีการ Unmount
umount 10.98.6.51:/var/nfsshare

ติดตั้ง Slurm (ต่อ)

Download ไฟล์ติดตั้งมาไว้ที่เครื่อง Headnode ใน Path /var/nfsshare (ในที่นี้เป็นเวอร์ชัน 20.08.4)

cd /var/nfsshare
yum install wget -y
wget https://download.schedmd.com/slurm/slurm-21.08.4.tar.bz2

ลง rpmbuild

yum install rpm-build
yum install python3 readline-devel 
yum install perl pam-devel perl-ExtUtils\* 
yum install mariadb-server mariadb-devel
yum install gcc gcc-c++ make

Build ไฟล์ที่โหลดมา

rpmbuild -ta slurm-21.8.4.tar.bz2

เมื่อ Build เสร็จจะมี Folder rmbuild ขึ้นมา เข้าไปยังไฟล์ที่ได้จากการ Build

cd rpmbuild/RPMS/x86_64

ลงทุกตัวด้วยคำสั่ง

yum --nogpgcheck localinstall *

ไปยัง Shared folder ที่เครื่องอื่น ๆ เพื่อลงเหมือนกัน

Config Slurm