Difference between revisions of "Slurm Install"
Line 46: | Line 46: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | === ติดตั้ง 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 (ต่อ) ==== |
+ | [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 (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 ที่เครื่องอื่น ๆ เพื่อลงเหมือนกัน