slurm federationを使ってaws parallel clusterと連携する（準備②）

### 前提

前回オンプレで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の構成を行います。

https://docs.aws.amazon.com/ja_jp/parallelcluster/latest/ug/install-pcui-v3.html

リンクをクリックすると下図の画面になります。
スタック名とAdmin's EMailを設定してください。
メールアドレス宛に初期パスワードが送られますので正しいアドレスを入れてください。
![スクリーンショット 2024-10-18 21.24.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/b19653ce-184a-8b49-7b69-118f1534791f.png)

中間のオプションは今回すっ飛ばします。

下図のようにチェックボックス2つともONにしてください。
![スクリーンショット 2024-10-18 21.25.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/b6f4f36f-2890-9331-b3e3-bd4ba0547d7c.png)

「スタックの作成」を押すとCloudFormationが動き始めます。
![スクリーンショット 2024-10-18 21.27.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/95b71f96-99c4-2ef5-e184-184d4369c823.png)

完了したら「出力タブ」のParallelClusterUIUrlのリンクをくりっくしてください
![スクリーンショット 2024-10-18 21.36.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/fdf6a388-de5e-e590-c05e-8be8e60dd1ac.png)

ログイン画面が出ますので、先程Admin's Emailで指定したメルアドと、メルアド宛てに送られてきたパスワードでログインします。
![スクリーンショット 2024-10-18 21.36.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/0c0544cc-1d6d-da6b-7ecd-e2826c9da8db.png)

### Prallel Clusterの作成

ログイン出来ると下図のような画面になるので、「create cluster」をクリックします。

![スクリーンショット 2024-10-18 21.55.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/7f9542bf-7458-cd94-0187-7b2b91d79b46.png)

Nameはslurm.confではclusternameに相当します。
OSには拘りがないので、デフォルトのままにしました。
VPCはデフォルトのVPCを選択してください。
![スクリーンショット 2024-10-18 21.55.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/f47e92be-d8a7-9225-cf5f-89df3c2b3ce3.png)

Slurm settingsは今後オンプレのslurmdbdと接続するつもりなので空欄のままにしています
![スクリーンショット 2024-10-18 21.56.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/1563b755-708e-c887-76d3-eded4e674d8f.png)

「next」を押すと下図の画面に移ります。
ここもデフォルトのまま進めます。
![スクリーンショット 2024-10-18 21.56.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/a754348e-cc08-14bb-3e1f-9381f11d8aad.png)

ここまで記載して忘れてました。
EC2のダッシュボードからキーペアを作成してください。
普段EC2使っている人なら分かると思うので作成は省略します。

![スクリーンショット 2024-10-18 21.56.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/288cc723-5286-6c95-1332-61aeec2f135b.png)

下図ではストレージを30GBにしていますが、最小が35GBでした。
一旦最小で作成しています。
![スクリーンショット 2024-10-18 21.56.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/4955a1b5-f098-5676-fc67-875b263e7001.png)

ここらへんもデフォルトか適当に修正してください。
（federation検証用なので適当![スクリーンショット 2024-10-18 21.59.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/ecc62839-58fe-4809-4e29-21d88eb99c88.png)
）

![スクリーンショット 2024-10-18 21.59.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/eb204034-ec7e-8681-f3f4-ecf4de85690a.png)


![スクリーンショット 2024-10-18 21.59.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/9dca2709-b587-2511-1a7f-1b3b7849e0c5.png)

最後に構成のyaml fileが出来上がります。

![スクリーンショット 2024-10-18 22.00.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/2a5992aa-c407-0ba5-81c0-6c2531b5e58c.png)

クラスタの作成が始まります。
![スクリーンショット 2024-10-18 22.00.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/499088de-077e-4ebe-5c2f-75c9f000ba40.png)

出来終わると下図のような表示になります。
![スクリーンショット 2024-10-18 22.10.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/ea37e326-f8a7-72b5-6965-41825d7e1884.png)

HeadNode(slurmマスターのec2)へのリンクが表示されますので
通常のec2へのログインと同じようにアクセスしてください。
![スクリーンショット 2024-10-18 22.11.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3856269/13ebba64-59d2-6f67-b2c5-860096a774be.png)

### HeadNodeでの確認

slurmdbdは構成しなかったので起動していませんが、slurmctld,mungeは起動し、sinfoで確認するとノードが4台動いていました。これは減らしておけば良かったです。


```bash
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機能の検証のためファイル同期は割愛します。