kuroの覚え書き

96の個人的覚え書き

TORQUEジョブスケジューラをインストールする。

最終的にはヘッドノードを独立させて、計算ノードはネットワークブートで運用しようと思うが、まずは2ノードでそれぞれHDDでブートして一方がヘッドノードも兼ねるという構成で構築実験をしてみようと思う。

https://qiita.com/yf_xa/items/6042619a5d1a3decf8eb
http://tech.ckme.co.jp/torque.shtml

まずは情報収集から

Centos7へのインストール手順
rootになって

yum install -y epel-release
yum install -y torque-client torque-mom torque-server torque-scheduler

create-munge-key

pbs_server -t create -f -D &    #サーバプロファイルを作成
pbs_server_pid=$!

kill $pbs_server_pid    #pbs_serverが起動するので一旦終了させる

echo "$HOSTNAME np=$(nproc) num_node_boards=1 numa_board_str=$(nproc)" > /var/lib/torque/server_priv/nodes

echo "HostA" > /etc/torque/server_name    #ヘッドノードのホスト名を記述

yumでバイナリをインストールするとNUMAが有効化されているため
num_node_boards=1 numa_board_str=$(nproc)
をちゃんと設定しておく必要があるようだ。

# nano /var/lib/torque/mom_priv/config

$pbsserver localhost

$pbsserver HostA
に書き換える。

# サーバを起動する
systemctl start munge
systemctl start trqauthd
systemctl start pbs_server
systemctl start pbs_sched
systemctl start pbs_mom
systemctl enable munge trqauthd pbs_server pbs_sched pbs_mom

# キューを設定する。 キューの名前はここではbatchとしている。
qmgr -c "create queue batch queue_type=execution"
qmgr -c "set queue batch started=true"
qmgr -c "set queue batch enabled=true"
qmgr -c "set queue batch resources_default.nodes=1"
qmgr -c "set queue batch resources_default.walltime=3600"
qmgr -c "set server default_queue=batch"
qmgr -c "set server scheduling=true"

設定の確認

# qmgr -c 'p s'

    #
    # Create queues and set their attributes.
    #
    #
    # Create and define queue batch
    #
    create queue batch
    set queue batch queue_type = Execution
    set queue batch resources_default.nodes = 1
    set queue batch resources_default.walltime = 01:00:00
    set queue batch enabled = True
    set queue batch started = True
    #
    # Set server attributes.
    #
    set server scheduling = True
    set server acl_hosts = HostA
    set server acl_hosts += localhost
    set server default_queue = batch
    set server log_events = 511
    set server mail_from = adm
    set server scheduler_iteration = 600
    set server node_check_rate = 150
    set server tcp_timeout = 300
    set server job_stat_rate = 45
    set server poll_jobs = True
    set server mom_job_sync = True
    set server next_job_number = 0
    set server moab_array_compatible = True
    set server nppcu = 1

これでサーバは起動したはず。

# pbsnodes -a
HostA-0
     state = free
     np = 16
     ntype = cluster
     status = rectime=1530434061,varattr=,jobs=,state=free,netload=? 0,gres=,loadave=0.00,ncpus=8,physmem=6282540kb,availmem=5407296kb,totmem=6282540kb,idletime=293,nusers=0,nsessions=0,uname=Linux HostA 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64,opsys=linux
     mom_service_port = 15002
     mom_manager_port = 15003

こんな感じになってたらいいみたい。
試しにジョブを投げてみる。

$ echo "sleep 30" | qsub
 0.HostA

qsubは一般ユーザーでしかできない。

$ qstat
Job ID                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
0.HostA                   STDIN            user name              0 R batch  

こんな感じ。

さて、このインストールだとヘッドノード1台で計算ノードも兼ねている状態なので、計算ノードをもう1台加えたい。

https://heavywatal.github.io/dev/torque.html
http://mumeiyamibito.0am.jp/doku.php/サーバ関連/torque_pbs

どうも的確な情報がcentos7について得られないな。
結局、以下のような手順でうまくいった(ような気がする)
まず、クライアント(計算ノード)に

# yum install -y epel-release
# yum install -y torque-client torque-mom

とインストール。

# nano /etc/torque/server_name

    HostA

でサーバー名としてヘッドノードのhostnameを書き込み、

# nano /var/lib/torque/mom_priv/config 

    $pbsserver HostA

でサーバーと同様に$pbsserverを書き換えた。

firewallの設定として

# firewall-cmd --add-port=15001/tcp --zone=public --permanent
# firewall-cmd --add-port=15002/tcp --zone=public --permanent
# firewall-cmd --add-port=15003/tcp --zone=public --permanent
# firewall-cmd --add-port=15003/udp --zone=public --permanent
# firewall-cmd --add-port=15004/tcp --zone=public --permanent

と15001〜15004を開けてやり、

]# systemctl start pbs_mom

とクライアントを起動。
いっぽうヘッドノード側で

# nano /var/lib/torque/server_priv/nodes 

    HostA np=16 num_node_boards=1 numa_board_str=16
    HostB np=16 num_node_boards=1 numa_board_str=16

というふうに計算ノードのhostを書き加えてやる。
最後にヘッドノード側も

# firewall-cmd --add-port=15001/tcp --zone=public --permanent
# firewall-cmd --add-port=15002/tcp --zone=public --permanent
# firewall-cmd --add-port=15003/tcp --zone=public --permanent
# firewall-cmd --add-port=15003/udp --zone=public --permanent
# firewall-cmd --add-port=15004/tcp --zone=public --permanent

と、穴を開けてやって、

# systemctl restart munge trqauthd pbs_server pbs_sched pbs_mom

これにて無事

# pbsnodes -a
HostA-0
     state = free
     np = 16
     ntype = cluster
     status = rectime=1530457230,varattr=,jobs=,state=free,netload=? 0,gres=,loadave=0.00,ncpus=8,physmem=6282540kb,availmem=5434500kb,totmem=6282540kb,idletime=534,nusers=0,nsessions=0,uname=Linux HostA 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64,opsys=linux
     mom_service_port = 15002
     mom_manager_port = 15003

HostB-0
     state = free
     np = 16
     ntype = cluster
     status = rectime=1530457230,varattr=,jobs=,state=free,netload=? 0,gres=,loadave=0.00,ncpus=8,physmem=6249708kb,availmem=5227160kb,totmem=6249708kb,idletime=3094,nusers=0,nsessions=0,uname=Linux HostB 3.10.0-862.3.3.el7.x86_64 #1 SMP Fri Jun 15 04:15:27 UTC 2018 x86_64,opsys=linux
     mom_service_port = 15002
     mom_manager_port = 15003

このように2ノードがクラスタとして使えるようになった。


さて、来週には新規購入で新品のヘッドノードが届くが、こいつをPXEブートと組み合わせてうまく設定できるだろうか?ちょっと不安。