最終的にはヘッドノードを独立させて、計算ノードはネットワークブートで運用しようと思うが、まずは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ブートと組み合わせてうまく設定できるだろうか?ちょっと不安。