FreeBSDでディスクレスクラスターⅡ
今回は?
前回までに、TFTPの設定とDHCPの設定、配布用OSの調整を行い、PXEbootで起動できるようになりました。
今回はSlurm Workload Managerのインストールと設定を行い、Jobの発行とクラスターノードでのJobの実行ができるようにしていきます。
Slurm Workload Manager
インストールはPortsからやってもいいのですが、時間かかるので、
pkg install slurm-wlm
とやってしまいましょう。これで依存するもの(認証に使うmunge等)もインストールされます。
設定は/usr/local/etc/slurm.confから行うのですが、そのうち詳細をかくので、今は良しなにやってみてください。(本当はここが重要なのにゴメンナサイ。クラスタのメンテ中でまだ設定の見直し中なのです…。)
サービスの起動設定は、head(管理サーバ)は/etc/rc.confに
slurmctld_enable="YES" munged_enable="YES"
と追記してください。
計算ノードのための設定は、/conf/default/etc/rc.confに
slurmd_enable="YES" munged_enable="YES"
として、
# ./clone_root
を実行してくだい。
このままでは、/varファイルにディレクトリツリーが作製されないため、slurmとmungeのlogが書き出せず、head(管理サーバ)からidle*となってJobを実行できません。また、計算ノードの/varはRamディスクのため、/disklessに定義済みの/varを置くということもできません。かといって/disklessを読み書き可能にすると、複数台の計算ノードから大量のLogの書き込みが常に掛かるため、ディスクにもネットワークにも計算以外の無駄な負荷をかけることになり、気分がよろしくありません。
そこで、デフォルトのディレクトリツリーを定義しているファイルがあるので、そのファイルを書き換えてしまいましょう。
デフォルトのディレクトリツリーは/etc/mtree/BSD.var.distというファイルになります。このファイルをまずは、
# cp /etc/mtree/BSD.var.dist /conf/etc/default/mtree/BSD.var.dist
として、コピーしていまいましょう。
コピーしたファイル(/conf/etc/default/mtree/BSD.var.dist)を開いてみるとなんとなく定義の仕方がわかると思います。
とりあえず、
︙ lib munge mode=0711 .. slurm uname=slurm gname=slurm .. .. ︙ log munge mode=0711 .. slurm uname=slurm gname=slurm .. .. ︙ run munge mode=0711 .. ︙ slurm uname=slurm gname=slurm .. ︙ ..
こんな感じに追記してあげてください。
※終わりの「..」(ドット×2)を忘れるとエラーを吐いてシングルユーザーモードでしかログインできなくなるの注意です。
再度、
# ./clone_root
を実行してくだい。
最後にmunge認証のkeyを設定します。これは自分で決めても良いのですが、公式が推奨してる方法を使いましょう。
こんな感じでコマンドを実行してください。
# dd if=/dev/random bs=1 count=1024 > /usr/local/etc/munge/munge.key
これでkeyは生成されました。
計算ノードにも配布しなければならないのですが、今回は/usrはNFSでマウントされるので、これで共有(配布)されることになります。
これでslurmの設定は完了です!!
とりあえずログインノード(head)にログインして、
$ srun -n 4 hostname
とやってみると、各計算ノードでhostnameを実行した結果が表示されます。
順番は、実行される順序が不定であったり、ネットワークで決まるため、実行するたびに変わります。