TL;DL
Slurm v23.11 から従来コンポーネント間の認証に必須だった munge
の代わりに組み込みのプラグインによる認証が使用可能となり、Slurm 構築がぐっと楽になりました。
Slurm 認証方式
従来 Slurm クラスタを構築する際には Slurm コンポーネント(slurmctld
slurmd
slurmdbd
slurm-client
など)間の通信・認証に munge
が必須であったため、Slurm とは別パッケージとして munge
をインストールし、鍵のセットアップや構成を行う必要がありました。
この munge
、設定が難解 ... とまでは言わないのですが、そもそも認証機構を Slurm 外に持つこと自体が煩雑で、めんどくさい側面があったのは否めません。
これについて、Slurm v23.11 から自身のプラグインによる認証がサポートされるようになったため、Slurm 単独で通信・認証が完結するようになりました。
注意
現在 apt install
などでインストールできる Slurm はややバージョンが古いため、23.11 系を使用するには手動でビルドが必要な可能性があります。当方もソースからビルドしたうえで試していますので、ご注意ください。
手順
ドキュメント載っている通りですが、再記載します。
キーを生成する
Slurm コンポーネントが認証に使用する共有キーとして、slurm.key
を作成します。特殊なツールなどがあるわけではなく、中身はテキストデータ等でも問題ないようです。
なお、ファイルは /etc/slurm/slurm.key
の一択となるようで、パスやファイル名の変更はできないようなので注意してください。
ドキュメントでは、/dev/random
からランダムデータを生成する方法が紹介されています。
$ dd if=/dev/random of=/etc/slurm/slurm.key bs=1024 count=1
キーのパーミッション設定
slurm.key
が必要なすべてのノードでアクセス可能となるよう、/etc/slurm
に配置してください。
キーのパーミッションを適切に設定します(以下は Slurm ユーザが slurm
の場合の例となるので slurm.conf
の SlurmUser
を参照うえ、適切に指定してください)。
$ chown slurm:slurm /etc/slurm/slurm.key
$ chmod 600 /etc/slurm/slurm.key
コンフィグ設定
それぞれ conf
ファイルを以下のように設定します。
※ AuthType
はデフォルトでは auth/munge
になっているはずです。
- slurm.conf
AuthType=auth/slurm
CredType=cred/slurm
- slurmdbd.conf
AuthType=auth/slurm
設定後、各 Slurm デーモンを再起動してください。
クライアント設定
上述の Slurm 認証プラグインは各 Slurm のデーモンに内包されています。
もしいずれの Slurm デーモンが動作していないノード、つまり slurm-client
だけが入っているログインノードのような環境では、デフォルトで上記認証は動作しません。
この場合は認証用のデーモンとして slurm-sackd
を追加でインストールしてください。ビルドした場合も特に追加のビルドオプションなしで作成されるはずです。
ログインノードで Service として動作していれば OK です。
$ dpkg -i slurm-smd-sackd-xxxxx.deb
$ systemctl status sackd
動作確認
Slurm コマンドで各ノードやパーティションが見えていれば OK です。もしエラーになる場合は各デーモンのログを確認しましょう。
$ sinfo
NODELIST NODES PARTITION STATE CPUS MEMORY TMP_DISK WEIGHT FEATURES REASON
test[0-7] 8 sample* idle X XXXX XXXX XX (null) (null)
まとめ
やや新しめのバージョン向けではありますが認証機構を一本化でき、非常にシンプルな構成が採れるためメリットは大きいと思います。
これから構築される方はご検討ください。