slurm任務調度系統,主要應用在HPC集羣資源管理和任務調度。具體信息參見slurm官方網站:https://slurm.schedmd.com/
部署Slurm任務調度系統,須要部署NTP內網時間同步服務器,LDAP全局認證服務器,Mysql數據庫服務器
本篇博客主要記錄如何部署和使用slurm任務調度系統。php
節點主機名 | 操做系統 | 主機地址 | 主機角色 |
node11 | centos6.5_x86_64 | 192.168.10.11 | 主控制器 |
node12 | centos6.5_x86_64 | 192.168.10.12 | 備控制器 |
node13 | centos6.5_x86_64 | 192.168.10.13 | 數據存儲主控制器 |
node14 | centos6.5_x86_64 | 192.168.10.14 | 數據存儲備控制器 |
node15 | centos6.5_x86_64 | 192.168.10.15 | MySQL數據庫服務器 |
本篇博客的節點,均有已經部署好NTP和LDAP服務客戶端的node11克隆,減小部署過程的繁瑣。
KVM克隆虛擬機,參見博客《KVM虛擬機管理——虛擬機克隆.md》
博客園地址:http://www.javashuo.com/article/p-gkjhbjtb-cu.html
根據博客內容指導,很容易克隆出其餘幾臺虛擬機,提供slurm任務調度環境部署和測試。html
筆記內鏈:《NTP服務部署和測試.md》
博客園地址:http://www.javashuo.com/article/p-mbmlctky-es.html
NTP時間服務器部署完成以後,須要同步各個節點的時間。node
注:對於節點的NTP同步,能夠採用pdsh並行工具完成
pdsh並行工具安裝和使用,參見筆記內鏈:《並行管理工具——pdsh.md》
博客園地址:http://www.javashuo.com/article/p-citiedta-hw.htmlmysql
筆記內鏈:《LDAP-openldap服務部署和測試(YUM安裝).md》
博客園地址:http://www.javashuo.com/article/p-kvgtemmd-km.htmllinux
筆記內鏈:《MUNGE服務部署和測試.md》
博客園地址:http://www.javashuo.com/article/p-yizvibij-ce.htmlc++
本篇博客在node15上安裝MySQL數據庫
筆記內鏈:《MySQL數據庫服務器(YUM)安裝.md》
博客園:http://www.javashuo.com/article/p-bjccruua-bu.htmlsql
須要建立slurmadmin全局用戶,用於運行slucrmctld和slurmdbd;
slurmd由於負責節點的狀態,所以須要root權限,不須要建立;
一樣在LDAP中建立slurmadmin用戶
參見博客:《LDAP-openldap服務部署和測試(YUM安裝).md》
博客園地址:http://www.javashuo.com/article/p-kvgtemmd-km.html數據庫
在前面的博客中提到,把虛擬機console的/usr/local,做爲全局共享目錄,經過NFS文件系統實現共享。
在虛擬機console上,須要啓動NFS共享。編輯/etc/exports,內容以下圖所示:
執行命令:exportfs -r
,使得配置的內容生效,經過"exportfs"查看配置是否生效
執行命令:pdsh -a "yum -y install nfs-utils rpcbind"
,安裝掛載NFS須要的軟件包
執行命令:pdsh -a "service rpcbind start"
,開啓rpcbind服務,不然掛載會報錯
執行命令:pdsh -a "mount -t nfs 192.168.10.8:/usr/local /usr/local"
,對節點進行NFS文件系統掛載
執行命令:pdsh -a "df -h | grep -w local"
,對掛載狀況進行檢查centos
從slurm官方網站下載最新版本slurm,下載地址爲:https://www.schedmd.com/downloads.php
本篇博客主要部署兩個版本服務器
由於規劃在node15上部署了MySQL數據庫(虛擬機console並未部署MySQL),而在編譯slurm時,須要使用到mysql_config,所以須要在node15上進行編譯
將slurm-16.05.3.tar.gz拷貝至node15,而後解壓,編譯,安裝
tar -zxvf slurm-16.05.3.tar.gz -C /tmp
;yum -y install libgnomeui-devel readline-devel curl-devel
./configure \ --prefix=/usr/local/globle/softs/slurm/16.05.3 \ --sysconfdir=/usr/local/globle/softs/slurm/16.05.3/etc \ --localstatedir=/var \ --enable-pam \ --enable-memory-leak-debug \ --enable-front-end --enable-salloc-kill-cmd \ --enable-simulator \ --enable-multiple-slurmd \ --with-pam_dir=/lib64 \ --with-zlib \ --with-rrdtool \ --with-mysql_config=/usr/lib64/mysql/ \ --with-munge=/usr/local/globle/softs/munge/0.5.12/ \ --with-ssl \ --with-libcurl
make
進行編譯,執行命令make install
進行安裝mkdir etc log state
; chmod 777 log
cp slurm.conf.example cgroup.conf.example slurmdbd.conf.example /usr/local/globle/softs/slurm/16.05.3/etc/
詳細的配置文件參數詳解,參見官方提供的文檔:https://slurm.schedmd.com/slurm.conf.html
編輯slurm集羣主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurm.conf
筆記內鏈:《slurm.conf系統初始配置.md》
博客園地址:http://www.javashuo.com/article/p-fuzickzk-dd.html
編輯slurm集羣數據庫主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurmdbd.conf
筆記內鏈:《slurmdbd.conf系統初始配置.md》
博客園地址:http://www.javashuo.com/article/p-rrleqszr-kk.html
編輯slurm集羣cgroup機制配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/cgroup.conf
筆記內鏈:《cgroup.conf系統初始配置.md》
博客園地址:http://www.javashuo.com/article/p-xjeusspp-gz.html
本篇博客前面部分已經在虛擬機node15上建立了MySQL數據庫。
在node15上,執行:mysql -uroot -p
,輸入密碼進入數據庫系統
建立數據庫:create database slurm_acct_db;
受權node13訪問:grant all privileges on slurm_acct_db.* to 'slurmadmin'@'192.168.80.13' identified by 'liwanliang';
受權node14訪問:grant all privileges on slurm_acct_db.* to 'slurmadmin'@'192.168.80.14' identified by 'liwanliang';
刷新受權表:flush privileges;
在node13和node14節點,分別進行MySQL數據庫的鏈接。這要求node13和node14必須安裝了mysql軟件包。
在node13和node14上,分別執行:rpm - qa |grep mysql
查看是否安裝mysql軟件包。若未安裝,執行:yum -y install mysql
安裝
在node14和node14上,分別執行:mysql -h 192.168.80.15 -uslurmadmin -p
,輸入密碼進行數據庫鏈接測試。
進入數據庫以後,執行:show databases;
查看是否存在slurm_acct_db數據庫,驗證數據庫受權是否正確。
能夠採用slurmdbd -vvvvDDDD,進行調試啓動,查看是否啓動過程當中有無錯誤。若無錯誤,能夠以絕對路徑的方式啓動進程。
slurmdbd存在主備節點,node13做爲slurmdbd主節點。若配置文件中未配置slurmdbd的備份節點,則在node14上沒法啓動slurmdbd。
如需啓動,須要修改配置文件。
注:在線使用過程當中,若是修改了slurmdbd.conf配置,能夠經過sacctmgr reconfig從新加載配置文件。前提是配置文件不可以出現錯誤,不然會形成當前在線的服務over
在啓動控制器slurmctld以前,須要將slurm.conf中配置的slurm集羣名稱添加到數據庫中。
不然會在啓動slurmctld時,提示未註冊集羣。
執行命令:/usr/local/globle/softs/slurm/16.05.3/bin/sacctmgr add cluster myslurm
,根據提示輸入y便可在slurmdbd中,註冊集羣名稱
驗證。執行命令:/usr/local/globle/softs/slurm/16.05.3/bin/sacctmgr show cluster
,便可查看當前註冊的slurm集羣信息。
在節點node11上,執行命令:slurmctld -vvvvDDDD
,進行調試啓動,查看啓動過程當中是否存在錯誤,若無錯誤,則能夠後臺啓動。
在節點node12上,執行一樣的命令,便可啓動slurmctld的備份控制器。具體使用和測試,參見《Slurm任務調度系統部署和測試(源碼)(2).md》。
注:在線使用過程當中,若是修改了slurmctld.conf配置,能夠經過scontrol reconfig從新加載配置文件。前提是配置文件不可以出現錯誤,不然會形成當前在線的服務over
以下圖提示,執行命令:yum -y install gcc gcc-c++ automake autoconf
以下圖提示,執行命令:find / -name libpam.so*
,可確認系統中是否存在pam庫,而且可以確認路徑,而後在configure配置的--with-pam_dir=/lib64
在交互式調式結束後,結束slurmdbd進程。而後直接啓動時,從slurmdbd的日誌報錯以下圖所示:
在徹底配置成功以後,節點啓動了slurmd,可是經過sinfo看到的節點狀態始終爲down。同步了節點時間,關閉節點防火牆和selinux均爲解決問題。
最後經過查閱官方的FAQ,詳細的FAQ地址:https://slurm.schedmd.com/faq.html。最後把slurm.conf中的ReturnToService=0改成ReturnToService=2解決