Difference between revisions of "Slurm Install"

From CMU ITSC Network
Line 46: Line 46:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
====== ติดตั้ง Munge ======
+
=== ติดตั้ง Munge ===
 
Install REPL repository<syntaxhighlight lang="linux-config">
 
Install REPL repository<syntaxhighlight lang="linux-config">
 
yum install epel-release -y
 
yum install epel-release -y
Line 69: Line 69:
 
munge -n | ssh 10.98.6.52 unmunge
 
munge -n | ssh 10.98.6.52 unmunge
 
remunge
 
remunge
 +
</syntaxhighlight>ถ้าไม่เจอ error แสดงว่า Munge ทำงานได้ปกติ
 +
 +
=== ติดตั้ง Slurm ===
 +
ติดตั้ง service ต่าง ๆ ที่ Slurm ต้องใช้งาน<syntaxhighlight lang="linux-config">
 +
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
 +
</syntaxhighlight>
 +
 +
==== ติดตั้ง NFS Server เพื่อ Share folder ====
 +
 +
===== NFS Server (Headnode) =====
 +
สร้างโฟล์เดอร์ที่ต้องการแชร์ที่ไหนก็ได้ โดยในที่นี้จะสร้างไว้ใน /var/nfsshare<syntaxhighlight lang="linux-config">
 +
yum install nfs-utils -y
 +
systemctl start nfs-server rpcbind
 +
systemctl enable nfs-server rpcbind
 +
mkdir /var/nfsshare
 +
chmod -R 755 /var/nfsshare
 +
</syntaxhighlight>ตั้งค่าให้ NFS ทำงานทุกครั้งเมื่อเปิดเครื่อง<syntaxhighlight lang="linux-config">
 +
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
 +
</syntaxhighlight>Config ไฟล์สำหรับการแชร์<syntaxhighlight lang="linux-config">
 +
vi /etc/exports
 +
/var/nfsshare    10.98.6.0/24(rw,sync,no_root_squash,no_all_squash)
 +
</syntaxhighlight><!-- ro / rw :
 +
a) ro : allow clients read only access to the share.
 +
b) rw : allow clients read write access to the share.
 +
sync / async :
 +
a) sync : NFS server replies to request only after changes made by previous request are written to disk.
 +
b) async : specifies that the server does not have to wait.
 +
wdelay / no_wdelay
 +
a) wdelay : NFS server delays committing write requests when it suspects another write request is imminent.
 +
b) no_wdelay : use this option to disable to the delay. no_wdelay option can only be enabled if default sync option is enabled.
 +
no_all_squash / all_squash :
 +
a) no_all_squash : does not change the mapping of remote users.
 +
b) all_squash : to squash all remote users including root.
 +
root_squash / no_root_squash :
 +
a) root_squash : prevent root users connected remotely from having root access. Effectively squashing remote root privileges.
 +
b) no_root_squash : disable root squashing. --><syntaxhighlight lang="linux-config">
 +
exportfs -r
 +
</syntaxhighlight><!-- exportfs -v: Displays a list of shares files and export options on a server.
 +
exportfs -a: Exports all directories listed in /etc/exports.
 +
exportfs -u: UnExport one or more directories.
 +
exportfs -r: ReExport all directories after modifying /etc/exports. --><syntaxhighlight lang="linux-config">
 +
systemctl restart nfs-server
 +
</syntaxhighlight>เพิ่ม NFS Service เข้าไปใน Firewall<syntaxhighlight lang="linux-config">
 +
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
 +
</syntaxhighlight>
 +
 +
===== NFS Client (Compute node) =====
 +
ไปยังเครื่องที่หลือแล้วลง NFS Client<syntaxhighlight lang="linux-config">
 +
yum install nfs-utils -y
 +
</syntaxhighlight>เช็คโฟล์ดอร์ที่มีแชร์จากเครื่องหลัก<syntaxhighlight lang="linux-config">
 +
showmount -e 10.98.6.51
 +
</syntaxhighlight>สร้าง Folder ที่ต้องการให้เห็นไฟล์ที่แชร์มา โดยในที่นี้จะให้เป็น Path เดียวกันกับเครื่อง Headnode
 +
 +
พร้อม Mount เข้ามา<syntaxhighlight lang="linux-config">
 +
mkdir -p /var/nfsshare
 +
mount -t nfs 10.98.6.51:/var/nfsshare /var/nfsshare
 +
</syntaxhighlight>
 +
 +
===== วิธี Mount แบบถาวร =====
 +
ถ้าไม่ทำการ Mount แบบถาวร เมื่อปิดเครื่องแล้วเปิดใหม่ขึ้นมาตัว Folder ที่ Mount จะหายไป ทำให้ต้อง mount ใหม่ถ้าจะใช้งาน<syntaxhighlight lang="linux-config">
 +
vi /etc/fstab
 +
10.98.6.51:/var/nfsshare /var/nfsshare nfs defaults 0 0
 +
</syntaxhighlight>
 +
 +
===== วิธีการ Unmount =====
 +
<syntaxhighlight lang="linux-config">
 +
umount 10.98.6.51:/var/nfsshare
 
</syntaxhighlight>
 
</syntaxhighlight>
  
====== ติดตั้ง Slurm ======
+
==== ติดตั้ง Slurm (ต่อ) ====
 +
[https://www.schedmd.com/downloads.php Download] ไฟล์ติดตั้งมาไว้ที่เครื่อง Headnode ใน Path /var/nfsshare (ในที่นี้เป็นเวอร์ชัน 20.08.4)<syntaxhighlight lang="linux-config">
 +
cd /var/nfsshare
 +
yum install wget -y
 +
wget https://download.schedmd.com/slurm/slurm-21.08.4.tar.bz2
 +
</syntaxhighlight>ลง rpmbuild<syntaxhighlight lang="linux-config">
 +
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
 +
 
 +
</syntaxhighlight>Build ไฟล์ที่โหลดมา<syntaxhighlight lang="linux-config">
 +
rpmbuild -ta slurm-21.8.4.tar.bz2
 +
</syntaxhighlight>เมื่อ Build เสร็จจะมี Folder rmbuild ขึ้นมา
 +
 
 +
เข้าไปยังไฟล์ที่ได้จากการ Build<syntaxhighlight lang="linux-config">
 +
cd rpmbuild/RPMS/x86_64
 +
</syntaxhighlight>ลงทุกตัวด้วยคำสั่ง<syntaxhighlight lang="linux-config">
 +
yum --nogpgcheck localinstall *
 +
</syntaxhighlight>ไปยัง Shared folder ที่เครื่องอื่น ๆ เพื่อลงเหมือนกัน
 +
 
 +
===== Config Slurm =====

Revision as of 10:12, 26 November 2021

การติดตั้ง

ทรัพยากรที่ใช้ในการติดตั้ง ประกอบไปด้วยเครื่องทั้งหมด 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