1.1 節點信息
2. 節點准備
3. 部署NTP服務器
4. 部署LDAP服務器
5. 部署Munge認證服務
6. 部署Mysql數據庫服務
7. 部署slurm
7.1 創建slurm用戶
7.2 掛載全局文件系統
7.3 slurm下載
7.4 編譯安裝
8. slurm配置
8.1 配置slurm.conf
8.2 配置slurmdbd.conf
8.3 配置cgroup.conf
8.4 配置數據庫和測試
8.4.1 node15創建數據庫並授權
8.4.2 測試連接
9. slurm啟動
9.1 啟動數據庫存儲服務slurmdbd
9.2 注冊集群信息
9.3 啟動控制器slurmctld
10. 錯誤及解決
10.1 未安裝編譯器
10.2 未發現PAM庫路徑
10.3 啟動slurmdbd日志報錯
10.4 節點狀態DOWN
1. 概述
slurm任務調度系統,主要應用在HPC集群資源管理和任務調度。具體信息參見slurm官方網站:https://slurm.schedmd.com/
部署Slurm任務調度系統,需要部署NTP內網時間同步服務器,LDAP全局認證服務器,Mysql數據庫服務器
本篇博客主要記錄如何部署和使用slurm任務調度系統。
1.1 節點信息
節點主機名 | 操作系統 | 主機地址 | 主機角色 |
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數據庫服務器 |
2. 節點准備
本篇博客的節點,均有已經部署好NTP和LDAP服務客戶端的node11克隆,減少部署過程的繁瑣。
KVM克隆虛擬機,參見博客《KVM虛擬機管理——虛擬機克隆.md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9193910.html
根據博客內容指導,很容易克隆出其他幾台虛擬機,提供slurm任務調度環境部署和測試。
3. 部署NTP服務器
筆記內鏈:《NTP服務部署和測試.md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9194004.html
NTP時間服務器部署完成之后,需要同步各個節點的時間。
注:對於節點的NTP同步,可以采用pdsh並行工具完成
pdsh並行工具安裝和使用,參見筆記內鏈:《並行管理工具——pdsh.md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9194146.html
4. 部署LDAP服務器
筆記內鏈:《LDAP-openldap服務部署和測試(YUM安裝).md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9193916.html
5. 部署Munge認證服務
筆記內鏈:《MUNGE服務部署和測試.md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9194032.html
6. 部署Mysql數據庫服務
本篇博客在node15上安裝MySQL數據庫
筆記內鏈:《MySQL數據庫服務器(YUM)安裝.md》
博客園:https://www.cnblogs.com/liwanliangblog/p/9194704.html
7. 部署slurm
7.1 創建slurm用戶
需要創建slurmadmin全局用戶,用於運行slucrmctld和slurmdbd;
slurmd因為負責節點的狀態,因此需要root權限,不需要創建;
同樣在LDAP中創建slurmadmin用戶
參見博客:《LDAP-openldap服務部署和測試(YUM安裝).md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9193916.html
7.2 掛載全局文件系統
在前面的博客中提到,把虛擬機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"
,對掛載情況進行檢查
7.3 slurm下載
從slurm官方網站下載最新版本slurm,下載地址為:https://www.schedmd.com/downloads.php
本篇博客主要部署兩個版本
- slurm-16.05.3.tar.gz 該版本已經被官網廢棄,本篇博客因為工作需要繼續使用
- slurm-17.11.7.tar.bz2 截至博客更新時的最新版本
7.4 編譯安裝
因為規划在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安裝依賴環境
執行命令:yum -y install libgnomeui-devel readline-devel curl-devel
- 進入目錄,配置configure
執行以下命令:./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
進行安裝 - 創建配置文件目錄
上述過程完成后,可以在/usr/local/globle/softs/slurm下查看已經安裝的目錄,但是此時該目錄下並沒有etc,log,state等目錄,因此需要手動創建
執行命令:mkdir etc log state
;
修改目錄屬性:chmod 777 log
- 拷貝配置文件模板
在源碼目錄下的etc目錄中,存放着配置文件的模板文件
執行命令:cp slurm.conf.example cgroup.conf.example slurmdbd.conf.example /usr/local/globle/softs/slurm/16.05.3/etc/
8. slurm配置
詳細的配置文件參數詳解,參見官方提供的文檔:https://slurm.schedmd.com/slurm.conf.html
8.1 配置slurm.conf
編輯slurm集群主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurm.conf
筆記內鏈:《slurm.conf系統初始配置.md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9201624.html
8.2 配置slurmdbd.conf
編輯slurm集群數據庫主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurmdbd.conf
筆記內鏈:《slurmdbd.conf系統初始配置.md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9201634.html
8.3 配置cgroup.conf
編輯slurm集群cgroup機制配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/cgroup.conf
筆記內鏈:《cgroup.conf系統初始配置.md》
博客園地址:https://www.cnblogs.com/liwanliangblog/p/9201639.html
8.4 配置數據庫和測試
本篇博客前面部分已經在虛擬機node15上創建了MySQL數據庫。
8.4.1 node15創建數據庫並授權
在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;
8.4.2 測試連接
在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數據庫,驗證數據庫授權是否正確。
9. slurm啟動
9.1 啟動數據庫存儲服務slurmdbd
可以采用slurmdbd -vvvvDDDD,進行調試啟動,查看是否啟動過程中有無錯誤。若無錯誤,可以以絕對路徑的方式啟動進程。
slurmdbd存在主備節點,node13作為slurmdbd主節點。若配置文件中未配置slurmdbd的備份節點,則在node14上無法啟動slurmdbd。
如需啟動,需要修改配置文件。
注:在線使用過程中,如果修改了slurmdbd.conf配置,可以通過sacctmgr reconfig重新加載配置文件。前提是配置文件不能夠出現錯誤,否則會造成當前在線的服務over
9.2 注冊集群信息
在啟動控制器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集群信息。
9.3 啟動控制器slurmctld
在節點node11上,執行命令:slurmctld -vvvvDDDD
,進行調試啟動,查看啟動過程中是否存在錯誤,若無錯誤,則可以后台啟動。
在節點node12上,執行同樣的命令,即可啟動slurmctld的備份控制器。具體使用和測試,參見《Slurm任務調度系統部署和測試(源碼)(2).md》。
注:在線使用過程中,如果修改了slurmctld.conf配置,可以通過scontrol reconfig重新加載配置文件。前提是配置文件不能夠出現錯誤,否則會造成當前在線的服務over
10. 錯誤及解決
10.1 未安裝編譯器
如下圖提示,執行命令:yum -y install gcc gcc-c++ automake autoconf
10.2 未發現PAM庫路徑
如下圖提示,執行命令:find / -name libpam.so*
,可確認系統中是否存在pam庫,並且能夠確認路徑,然后在configure配置的--with-pam_dir=/lib64
10.3 啟動slurmdbd日志報錯
在交互式調式結束后,結束slurmdbd進程。然后直接啟動時,從slurmdbd的日志報錯如下圖所示:
10.4 節點狀態DOWN
在完全配置成功之后,節點啟動了slurmd,但是通過sinfo看到的節點狀態始終為down。同步了節點時間,關閉節點防火牆和selinux均為解決問題。
最后通過查閱官方的FAQ,詳細的FAQ地址:https://slurm.schedmd.com/faq.html。最后把slurm.conf中的ReturnToService=0改為ReturnToService=2解決