前提
前回オンプレでslurmのfederation機能を有効にするところまで行いました。
今回はaws側でslurm(parallel cluster)を構築するところまで行います。
似たサービス含めて私の認識は以下の通りです。多少間違っているかも
サービス | サービス形態 | 使用技術 |
---|---|---|
Parallel Cluster | IaaS | slurm,EC2,EFS,FSx,Auto Scale等 |
Batch | SaaS | docker,FarGate, EC2 ,Autoscale等 |
Parallel Computing Service | SaaS | 使った事がないので不明 |
PCS(Parallel Computing Service)については以下の記事で確認してください。
https://aws.amazon.com/jp/blogs/news/announcing-aws-parallel-computing-service-to-run-hpc-workloads-at-virtually-any-scale/
PCSだと全然slurm.confを直接触れないようです。
今回はUIを使ってPrallel Cluster(slurm)で構築します。
今回ハマったのが、default VPCを削除していると、なぜが失敗する現象が出ました。(解決方法不明)
一旦default VPCが残っている別の国にREGIONを変えることで一応成功しています。
同僚に聞いてもUI作成でよく失敗すると言っていたので明確な解決方法が見いだせてないようです。
UIクイックリンクからのParallelCluster用のスタック作成
CLIから行う場合は、ec2で環境を作る必要がありますが、
無料枠を使うとは言えもったいないので、REGION毎のUIクイックリンクから、
ParallelClusterの構成を行います。
リンクをクリックすると下図の画面になります。
スタック名とAdmin's EMailを設定してください。
メールアドレス宛に初期パスワードが送られますので正しいアドレスを入れてください。
中間のオプションは今回すっ飛ばします。
「スタックの作成」を押すとCloudFormationが動き始めます。
完了したら「出力タブ」のParallelClusterUIUrlのリンクをくりっくしてください
ログイン画面が出ますので、先程Admin's Emailで指定したメルアドと、メルアド宛てに送られてきたパスワードでログインします。
Prallel Clusterの作成
ログイン出来ると下図のような画面になるので、「create cluster」をクリックします。
Nameはslurm.confではclusternameに相当します。
OSには拘りがないので、デフォルトのままにしました。
VPCはデフォルトのVPCを選択してください。
Slurm settingsは今後オンプレのslurmdbdと接続するつもりなので空欄のままにしています
「next」を押すと下図の画面に移ります。
ここもデフォルトのまま進めます。
ここまで記載して忘れてました。
EC2のダッシュボードからキーペアを作成してください。
普段EC2使っている人なら分かると思うので作成は省略します。
下図ではストレージを30GBにしていますが、最小が35GBでした。
一旦最小で作成しています。
ここらへんもデフォルトか適当に修正してください。
(federation検証用なので適当
)
最後に構成のyaml fileが出来上がります。
HeadNode(slurmマスターのec2)へのリンクが表示されますので
通常のec2へのログインと同じようにアクセスしてください。
HeadNodeでの確認
slurmdbdは構成しなかったので起動していませんが、slurmctld,mungeは起動し、sinfoで確認するとノードが4台動いていました。これは減らしておけば良かったです。
Last login: Fri Oct 18 13:07:54 2024
, #_
~\_ ####_ Amazon Linux 2
~~ \_#####\
~~ \###| AL2 End of Life is 2025-06-30.
~~ \#/ ___
~~ V~' '->
~~~ / A newer version of Amazon Linux is available!
~~._. _/
_/ _/ Amazon Linux 2023, GA and supported until 2028-03-15.
_/m/' https://aws.amazon.com/linux/amazon-linux-2023/
[ec2-user@ip-172-31-8-100 ~]$ cd /opt/slurm/etc
[ec2-user@ip-172-31-8-100 etc]$ ls
cgroup.conf scripts slurm_parallelcluster_cgroup.conf slurm_parallelcluster_slurmdbd.conf
gres.conf slurm.conf slurm_parallelcluster.conf slurm.sh
pcluster slurm.csh slurm_parallelcluster_gres.conf
[ec2-user@ip-172-31-8-100 etc]$ systemctl status munge
● munge.service - MUNGE authentication service
Loaded: loaded (/usr/lib/systemd/system/munge.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-10-18 13:07:59 UTC; 3min 18s ago
Docs: man:munged(8)
Main PID: 5234 (munged)
CGroup: /system.slice/munge.service
└─5234 /usr/sbin/munged
Oct 18 13:07:59 ip-172-31-8-100 systemd[1]: Starting MUNGE authentication service...
Oct 18 13:07:59 ip-172-31-8-100 systemd[1]: Started MUNGE authentication service.
[ec2-user@ip-172-31-8-100 etc]$ systemctl status slurmdbd
Unit slurmdbd.service could not be found.
[ec2-user@ip-172-31-8-100 etc]$ systemctl status slurmdbd
Unit slurmdbd.service could not be found.
[ec2-user@ip-172-31-8-100 etc]$ systemctl status slurmctld
● slurmctld.service - Slurm controller daemon
Loaded: loaded (/etc/systemd/system/slurmctld.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2024-10-18 13:08:00 UTC; 3min 45s ago
Main PID: 5295 (slurmctld)
CGroup: /system.slice/slurmctld.service
├─5295 /opt/slurm/sbin/slurmctld -D -s
└─5297 slurmctld: slurmscriptd
Oct 18 13:08:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: error: Could not open trigger state file /...ory
Oct 18 13:08:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: error: NOTE: Trying backup state save file...st!
Oct 18 13:08:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: No trigger state file (/var/spool/slurm.st...ver
Oct 18 13:08:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: read_slurm_conf: backup_controller not specified
Oct 18 13:08:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: Reinitializing job accounting state
Oct 18 13:08:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: select/cons_tres: select_p_reconfigure: se...ure
Oct 18 13:08:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: select/cons_tres: part_data_create_array: ...ons
Oct 18 13:08:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: Running as primary controller
Oct 18 13:08:06 ip-172-31-8-100 slurmctld[5295]: slurmctld: POWER: Power save mode: 4 nodes
Oct 18 13:09:05 ip-172-31-8-100 slurmctld[5295]: slurmctld: SchedulerParameters=nohold_on_prolog_fail
Hint: Some lines were ellipsized, use -l to show in full.
[ec2-user@ip-172-31-8-100 etc]$ sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST
queue-1* up infinite 4 idle~ queue-1-dy-queue-1-cr-1-[1-4]
[ec2-user@ip-172-31-8-100 etc]$
[ec2-user@ip-172-31-8-100 etc]$ id munge
uid=402(munge) gid=402(munge) groups=402(munge)
[ec2-user@ip-172-31-8-100 etc]$ id slurm
uid=401(slurm) gid=401(slurm) groups=401(slurm),405(pcluster-slurm-share)
[ec2-user@ip-172-31-8-100 etc]$ Connection to ec2-3-39-235-124.ap-northeast-2.compute.amazonaws.com closed by remote host.
Connection to ec2-3-39-235-124.ap-northeast-2.compute.amazonaws.com closed
次回やること
これでaws parallel clusterの簡単なサービス起動は出来ました。
munge.key,uid,gidの調整のほかに、オンプレとaws間をVPNで接続する設定を行います。
そのほかにオンプレストレージとaws efsの同期などもありますが、federation機能の検証のためファイル同期は割愛します。