Slurm任務調度系統部署和測試(源碼)(1)

1. 概述

slurm任務調度系統,主要應用在HPC集羣資源管理和任務調度。具體信息參見slurm官方網站:https://slurm.schedmd.com/
部署Slurm任務調度系統,須要部署NTP內網時間同步服務器,LDAP全局認證服務器,Mysql數據庫服務器
本篇博客主要記錄如何部署和使用slurm任務調度系統。php

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
博客園地址:http://www.javashuo.com/article/p-gkjhbjtb-cu.html
根據博客內容指導,很容易克隆出其餘幾臺虛擬機,提供slurm任務調度環境部署和測試。html

3. 部署NTP服務器

筆記內鏈:《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

4. 部署LDAP服務器

筆記內鏈:《LDAP-openldap服務部署和測試(YUM安裝).md
博客園地址:http://www.javashuo.com/article/p-kvgtemmd-km.htmllinux

5. 部署Munge認證服務

筆記內鏈:《MUNGE服務部署和測試.md
博客園地址:http://www.javashuo.com/article/p-yizvibij-ce.htmlc++

6. 部署Mysql數據庫服務

本篇博客在node15上安裝MySQL數據庫
筆記內鏈:《MySQL數據庫服務器(YUM)安裝.md
博客園:http://www.javashuo.com/article/p-bjccruua-bu.htmlsql

7. 部署slurm

7.1 建立slurm用戶

須要建立slurmadmin全局用戶,用於運行slucrmctld和slurmdbd;
slurmd由於負責節點的狀態,所以須要root權限,不須要建立;
一樣在LDAP中建立slurmadmin用戶
參見博客:《LDAP-openldap服務部署和測試(YUM安裝).md
博客園地址:http://www.javashuo.com/article/p-kvgtemmd-km.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",對掛載狀況進行檢查centos

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,而後解壓,編譯,安裝

  1. 解壓
    執行命令:tar -zxvf slurm-16.05.3.tar.gz -C /tmp
  2. YUM安裝依賴環境
    執行命令:yum -y install libgnomeui-devel readline-devel curl-devel
  3. 進入目錄,配置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
    注:上述部分--with選項,實際並無編譯。經過查看config.log的WARNING能夠確認是否安裝。mysql_config指定的是mysql_config的路徑,而非文件
  4. 編譯安裝
    執行命令make進行編譯,執行命令make install進行安裝
  5. 建立配置文件目錄
    上述過程完成後,能夠在/usr/local/globle/softs/slurm下查看已經安裝的目錄,可是此時該目錄下並無etc,log,state等目錄,所以須要手動建立
    執行命令:mkdir etc log state
    修改目錄屬性:chmod 777 log
  6. 拷貝配置文件模板
    在源碼目錄下的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
博客園地址:http://www.javashuo.com/article/p-fuzickzk-dd.html

8.2 配置slurmdbd.conf

編輯slurm集羣數據庫主配置文件:/usr/local/globle/softs/slurm/16.05.3/etc/slurmdbd.conf
筆記內鏈:《slurmdbd.conf系統初始配置.md
博客園地址:http://www.javashuo.com/article/p-rrleqszr-kk.html

8.3 配置cgroup.conf

編輯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

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解決

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

相關文章
相關標籤/搜索