新聞中心
SLURM 是一種可用于大型計(jì)算節(jié)點(diǎn)集群的高度可伸縮和容錯的集群管理器和作業(yè)調(diào)度系統(tǒng)。SLURM 維護(hù)著一個待處理工作的隊(duì)列并管理此工作的整體資源利用。它還以一種排他或非排他的方式管理可用的計(jì)算節(jié)點(diǎn)(取決于資源的需求)。最后,SLURM 將作業(yè)分發(fā)給一組已分配的節(jié)點(diǎn)來執(zhí)行工作并監(jiān)視平行作業(yè)至其完成。

在龍泉等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都營銷網(wǎng)站建設(shè),外貿(mào)營銷網(wǎng)站建設(shè),龍泉網(wǎng)站建設(shè)費(fèi)用合理。
1. 前期準(zhǔn)備
1.1 關(guān)閉SELinux
# vi /etc/sysconfig/selinux
SELINUX=disabled
# reboot
# getenforce(查看SELinux狀態(tài))
1.2 關(guān)閉 Firewall
# systemctl stop firewalld.service
# systemctl disable firewalld.service
1.3 安裝EPEL Repo
# yum -y install epel-release
-
查看倉庫狀態(tài)
# yum repolist
1.4 安裝axel與yum-axelget
# yum install axel yum-axelget
1.5 安裝與配置NTP服務(wù)
安裝與配置時間同步NTP服務(wù),運(yùn)行下列命令:
# yum install ntp -y
# systemctl enable ntpd.service
# ntpdate pool.ntp.org
# systemctl start ntpd
1.6 安裝與配置NIS和NFS服務(wù)
-
注意:Master Node必須先完成NIS server+NFS server的安裝與配置,然后進(jìn)行Compute Nodes的NIS client+NFS client的安裝與配置。
2. Master Node安裝Slurm
2.1 安裝MariaDB
此處推薦下載離線包進(jìn)行MariaDB的安裝。如果進(jìn)行再現(xiàn)安裝,請先進(jìn)行2.1.1步驟后,在terminal鍵入yum install -y MariaDB-server即可。
2.1.1 設(shè)置MariaDB.repo文件
-
推薦離線安裝與在線安裝都進(jìn)行設(shè)置
打開/etc/yum.repos.d/,新建MariaDB.repo文件
# cd /etc/yum.repos.d/
# vi MariaDB.repo
打開https://downloads.mariadb.org/mariadb/repositories/,選擇CentOS版本后,看到如下類似的的內(nèi)容,在文件中粘貼內(nèi)容,退出保存。
# MariaDB 10.2 CentOS repository list - created 2017-07-17 09:59 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
2.1.2 下載,解壓與安裝
下載離線包,解壓并進(jìn)行安裝
img
# axel -n 10 https://downloads.mariadb.com/MariaDB/mariadb-10.2.7/yum/rhel/mariadb-10.2.7-rhel-7-x86_64-rpms.tar
# tar xvf mariadb-10.2.7-rhel-7-x86_64-rpms.tar
# cd mariadb-10.2.7-rhel-7-x86_64-rpms/
# yum localinstall -y MariaDB-* galera-25.3.20-1.rhel7.el7.centos.x86_64.rpm
2.1.3 配置MariaDB
# service mysql start
# mysql_secure_installation
# systemctl enable mariadb.service
# systemctl status mariadb.service
# mysql -u root -p
2.2 安裝Slurm
2.2.1 創(chuàng)建全局用戶
在創(chuàng)建用戶和用戶組前,需要鍵入命令vi /etc/group查看用戶組是否沖突
-
注意:需要確保Master Node和Compute Nodes的UID和GID相同,如果未開啟NIS和NFS服務(wù),推薦進(jìn)行以下步驟。
# export MUNGEUSER=1190
# 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=1191
# groupadd -g $SlurmUSER slurm
# useradd -m -c "Slurm workload manager" -d /var/lib/slurm -u $SlurmUSER -g slurm -s /bin/bash slurm
# cd /var/yp
# make
2.2.2 安裝MUNGE
安裝MUNGE進(jìn)行身份驗(yàn)證。確保集群中的所有節(jié)點(diǎn)具有相同的munge.key。確保Munge的守護(hù)程序munged在Slurm的守護(hù)進(jìn)程之前啟動。
-
在所有節(jié)點(diǎn)安裝MUNGE rpms,安裝rng-tools來正確創(chuàng)建密鑰:
# yum install munge munge-libs munge-devel -y
# yum install rng-tools -y
# rngd -r /dev/urandom
2.2.3 配置MUNGE
2.2.3.1 創(chuàng)建全局密鑰
在Master Node進(jìn)行設(shè)置,創(chuàng)建一個在每個結(jié)點(diǎn)全局使用的密鑰。
# /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
2.2.3.2 密鑰同步
密鑰創(chuàng)建成功后,需要將該密鑰發(fā)送到所有計(jì)算節(jié)點(diǎn):
# scp -p /etc/munge/munge.key root@192.168.118.195:/etc/munge
# ...
2.2.3.3 權(quán)限設(shè)置
設(shè)置正確的所有權(quán)限和模式
# chown -R munge: /etc/munge/ /var/log/munge/
# chmod 0700 /etc/munge/ /var/log/munge/
# chmod 0711 /var/lib/munge/
2.2.3.4 啟動MUNGE服務(wù)
# systemctl start munge
# systemctl status munge
# systemctl enable munge
2.2.3.5 測試MUNGE服務(wù)
# munge -n
# munge -n | unmunge
# munge -n | ssh 192.168.118.195 unmunge # Master Node進(jìn)行測試
# remunge
2.2.4 Slurm的安裝與配置
2.2.4.1 安裝依賴包
# 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
2.2.4.2 下載Slurm安裝包
# wget https://www.schedmd.com/downloads/latest/slurm-17.02.6.tar.bz2
2.2.4.3 安裝rpmbuild編譯Slurm
# yum install rpm-build
# rpmbuild -ta slurm-17.02.6.tar.bz2
如果rpmbuild出現(xiàn)如下錯誤:
error: Failed build dependencies:
perl(ExtUtils::MakeMaker) is needed by slurm-17.02.6-1.el7.centos.x86_64
利用cpanm安裝Perl模塊后再進(jìn)行rpmbuild。
# yum install cpanm*
2.2.4.4 安裝Slurm
# cd /root/rpmbuild/RPMS/x86_64
# yum --nogpgcheck localinstall slurm-*
2.2.4.5 配置Slurm
進(jìn)入http://slurm.schedmd.com/configurator.easy.html,按照如下范例進(jìn)行自定義設(shè)置:
ControlMachine: mhc
ControlAddr: 192.168.118.163
NodeName: cas01
NodeAddr: 192.168.118.195
CPUs: 1
Sockets: 2
RealMemory: 27145 # terminal鍵入free -m查看,最好設(shè)置為實(shí)際值的85%
StateSaveLocation: /var/spool/slurmctld
SlurmctldLogFile: /var/log/slurmctld.log
SlurmdLogFile: /var/log/slurmd.log
AccountingStorageType=accounting_storage/mysql
ClusterName: mhc
JobAcctGatherType=jobacct_gather/linux
點(diǎn)擊Submit確認(rèn)后,將頁面的配置信息復(fù)制到slurm.conf中,保存退出;
# cd /etc/slurm
# vim slurm.conf
2.2.4.6 同步slurm.conf文件
設(shè)置正確的Master Node節(jié)點(diǎn)的slurm.conf發(fā)送給其他的Compute Node,同時對Compute Node進(jìn)行配置;
# scp -p /etc/slurm/slurm.conf root@192.168.118.195:/etc/slurm/
# ...
2.2.4.7 權(quán)限設(shè)置
確保Master Node具有所有正確的配置和文件
# mkdir /var/spool/slurmctld
# chown slurm: /var/spool/slurmctld
# chmod 755 /var/spool/slurmctld
# touch /var/log/slurmctld.log
# chown slurm: /var/log/slurmctld.log
# touch /var/log/slurm_jobacct.log /var/log/slurm_jobcomp.log
# chown slurm: /var/log/slurm_jobacct.log /var/log/slurm_jobcomp.log
2.2.4.8 測試slurmd配置
查看slurmd配置是否正確
# slurmd -C
2.2.4.9 開啟slurmctld服務(wù)
開啟Master Node的slurmctld服務(wù)
# systemctl start slurmctld.service
# systemctl status slurmctld.service
# systemctl enable slurmctld.service
2.3 安裝Slurm Accounting
Accounting records可以為slurm收集每個作業(yè)步驟的信息。Accounting records可以寫入一個簡單的文本文件或數(shù)據(jù)庫。
通過將文本文件指定為Accounting存儲類型從而可以輕松地將數(shù)據(jù)存儲到文本文件中。但是這個文件會變得越來越大,難以使用。因此,最簡單且推薦的方法是使用數(shù)據(jù)庫來存儲信息。而Mysql是目前唯一支持的數(shù)據(jù)庫。
2.3.1 創(chuàng)建slurm_acct_db數(shù)據(jù)庫
# mysql -u root -p
slurm_acct_db數(shù)據(jù)庫的配置:
> grant all on slurm_acct_db.* to ‘slurm’@’192.168.118.%’ identified by ‘!QAZ2wsx3edc’ with grant option
> grant all on slurm_acct_db.* to ‘slurm’@’localhost’ identified by ‘!QAZ2wsx3edc’ with grant option;
> SHOW VARIABLES LIKE ‘have_innodb’;
> create database slurm_acct_db;
> quit;
2.3.2 配置slurmdbd.conf文件
# cp /etc/slurm/slurmdbd.conf.example /etc/slurm/slurmdbd.conf
# chown slurm: /etc/slurm/slurmdbd.conf
# chmod 600 /etc/slurm/slurmdbd.conf
# mkdir /var/log/slurm/
# touch /var/log/slurm/slurmdbd.log
# chown slurm: /var/log/slurm/slurmdbd.log
# vi /etc/slurm/slurmdbd.conf
LogFile=/var/log/slurm/slurmdbd.log
DbdHost=localhost
DbdPort=6819
slurmUser=slurm
StorageHost=localhost
StoragePass=!QAZ2wsx3edc
StorageLoc=slurm_acct_db
2.3.3 創(chuàng)建一個正確的systemd文件
# cp /usr/lib/systemd/system/slurmctld.service /usr/lib/systemd/system/slurmd.service /usr/lib/systemd/system/slurmdbd.service /etc/systemd/system/
# cat /etc/systemd/system/slurmctld.service
2.3.4 同步slurm.conf文件
修改slurm.conf配置文件,同時同步到Compute Node
# vi /etc/slurm/slurm.conf
在AccountingStorageType=accounting_storage/mysql后添加這幾行
AccountingStorageHost=localhost
AccountingStoragePort=3306
AccountingStoragePass=!QAZ2wsx3edc
AccountingStorageUser=slurm
2.3.5 啟動SlurmDBD服務(wù)
# systemctl enable slurmdbd
# systemctl start slurmdbd
# systemctl status slurmdbd
3. Compute Node安裝Slurm
3.1 安裝Slurm
-
注意:在下面的步驟進(jìn)行之前,需確保集群節(jié)點(diǎn)的NIS和NFS服務(wù)已經(jīng)安裝配置完成。
3.1.1 安裝MUNGE
安裝MUNGE進(jìn)行身份驗(yàn)證
# yum install munge munge-libs munge-devel -y
3.1.2 設(shè)置權(quán)限與啟動MUNGE服務(wù)
設(shè)置Compute Node的MUNGE權(quán)限和啟動MUNGE服務(wù)
在下列操作之前,Master Node應(yīng)該將munge.key傳到Compute Nodes
# chown -R munge: /etc/munge/ /var/log/munge/
# chmod 0700 /etc/munge/ /var/log/munge/
# systemctl start munge
# systemctl enable munge
3.1.3 測試MUNGE服務(wù)
在Master Node測試訪問Compute Node
# munge -n | ssh 192.168.118.195 unmunge
# ...
3.1.4 Slurm的安裝與配置
3.1.4.1 安裝依賴包
# 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
3.1.4.2 安裝Slurm
# scp root@192.168.118.163:/root/rpmbuild/RPMS/x86_64/* /root/rpmbuild/RPMS/x86_64/
# cd /root/rpmbuild/RPMS/x86_64
# yum --nogpgcheck localinstall slurm-*
3.1.4.3 確保正確的配置
確保Compute Node具有所有正確的配置和文件
在下列操作之前,確保Master Node將slurm.conf發(fā)送給其他的Compute Nodes
# mkdir /var/spool/slurmd
# chown slurm: /var/spool/slurmd
# chmod 755 /var/spool/slurmd
# touch /var/log/slurmd.log
# chown slurm: /var/log/slurmd.log
3.1.4.4 開啟slurmd服務(wù)
開啟Compute Node的slurmd服務(wù)
# systemctl start slurmd.service
# systemctl status slurmd.service
# systemctl enable slurmd.service
Compute Nodes中出現(xiàn)Failed to start slurm node daemon.時候,同時cat /var/log/slurm.log后看到cannot create proctrack context for proctrack/cgroup錯誤的時候,執(zhí)行:
# cd /etc/slurm/
# cp cgroup.conf.example cgroup.conf
# cp cgroup_allowed_devices_file.conf.example cgroup_allowed_devices_file.conf
4. Slurm 測試指令
4.1 slurm測試
4.1.1 顯示所有Compute Nodes
# scontrol show nodes
如果Compute Nodes的State=DOWN,則如下執(zhí)行,將狀態(tài)變成IDLE:
# scontrol update nodename=cas01 state=resume
4.1.2 簡單測試執(zhí)行
# srun -N4 hostname
4.1.3 查看節(jié)點(diǎn)
# scontrol show nodes
4.1.4 顯示作業(yè)數(shù)量
# scontrol show jobs
4.1.5 使用腳本
# sbatch -N2 script-file
4.2 常見API
-
sacct被用來匯報(bào)工作或者解釋激活的或完成的工作的信息的工作步驟。
-
salloc被用來實(shí)時的分配給一個工作任務(wù)資源。經(jīng)常地這被用來分配資源并生成一個Shell(命令解釋程序)。這個Shell程序然后被用來執(zhí)行
srun命令運(yùn)行平行的任務(wù)們。
-
sattach被用來將標(biāo)準(zhǔn)輸入輸出以及錯誤的附加的信號能力附著于目前正在執(zhí)行的工作或工作步驟。這既可以被附著也可以將其從多任務(wù)線程中分離。
-
sbatch被用來提交一段工作腳本以進(jìn)行后續(xù)的執(zhí)行,這個腳本經(jīng)常性地包括一個或多個
srun命令去運(yùn)行平行任務(wù)。
-
sbcast被用來將一個文件從當(dāng)?shù)赜脖P轉(zhuǎn)移到當(dāng)?shù)赜脖P上被分配到這個工作的節(jié)點(diǎn)上。這可以被用來高效地使用(diskless)不怎么使用硬盤的計(jì)算節(jié)點(diǎn)或相對于一個共享文件系統(tǒng)而言提供更好的性能。
-
scancel被用來取消一個掛起或正在執(zhí)行的工作或工作步驟。他能夠被用來發(fā)送任意信號給所有與正在執(zhí)行的工作或工作步驟相關(guān)的進(jìn)程。
-
scontrol是管理性的工具用來視察并或修改slurm狀態(tài)。記住許多scontrol命令只能被管理員root權(quán)限執(zhí)行。
-
sinfo記錄了由slurm管理的(partition)分區(qū)和節(jié)點(diǎn)的狀態(tài),它有廣泛多樣的如過濾、排序、格式化等的選項(xiàng)。
-
smap記錄了由slurm管理的工作、分區(qū)和節(jié)點(diǎn)的狀態(tài)信息,但圖像化顯示的信息業(yè)反映了網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
-
strigger被用來設(shè)置、獲得或視察事件觸發(fā)器。事件觸發(fā)器包括了諸如節(jié)點(diǎn)going down(掛死)或工作任務(wù)接近了它們的限制事件。
-
sview是一個圖像化的用戶界面用來獲得并更新由slurm管理的工作、分區(qū)以及節(jié)點(diǎn)的狀態(tài)信息。
5. 參考資料
-
https://www.slothparadise.com/how-to-install-slurm-on-centos-7-cluster/
-
https://wiki.fysik.dtu.dk/niflheim/Slurm_database
-
SLURM Workload Manager
當(dāng)前文章:CentOS中部署Slurm
本文URL:http://www.dlmjj.cn/article/dhcpcdh.html


咨詢
建站咨詢
