AWS ParallelCluster を GUI で管理できる AWS ParallelCluster Manager を試してみた

GUI でクラスター管理もいいかもしれない。
2022.08.17

HPC のクラスター操作に GUI を使うの!?と思っていました。AWS ParallelCluster の場合はというと、CLI でクラスターを作成し、ときには変更、使わなくなったら削除する運用をpclsuterコマンドで行ってきました。GUI でクラスターを管理できると噂の AWS ParallelCluster Manager に手を出してみたら良かったので紹介します。

AWS ParallelCluster Manger の構築方法、新規クラスターの作成と、ジョブの実行、クラスターの削除までをキャプチャ中心でお届けします。

AWS ParallelClusetr Manger(Web コンソール)からできたこと

  • クラスターの作成・削除
    • 自前のコンフィグファイルをアップロードしてクラスター作成も可能
  • セッションマネージャーでヘッドノードへログイン
  • ジョブのサブミット
    • スクリプト(ジョブの内容)を作成するにはヘッドノードにログインする必要がある
  • ジョブの実行状況確認
  • コンピュートノードの起動状況確認
  • ヘッドノード、コンピュートノードの各種ログの検索、表示
    • CloudWatch Logs のロググループ内容をいい感じに表示してくれる
  • ParallelCluster Manager の ParallelCluster のバージョンへ追従が早い
    • 約3週間前にリリースされた v3.2 に対応していました

上記は今ところ確認できた範囲です。

AWS Parallel Cluster Manager とは

ParallelCluster のクラスターを管理するために ParallelCluster API をラップした Web インタフェースを提供してくれる仕組みです。利用費はサーバレスアーキテクチャなこともあり、一般的な利用では $1/月以下程度になるだろうと説明があります。

aws-samples/pcluster-manager: Manage AWS ParallelCluster through an easy to use web interface

画像引用: pcluster-manager/architecture.png at main · aws-samples/pcluster-manager

AWS ParallelCluster Manager をデプロイ

Quicstartを参考にすすめます。現時点で最新の ParallelCluster 3.2.0 に対応しており問題なく動作確認ができました。ひととおり動かしたあとに知ったのですが以下のセットアップガイドに沿いつつ、最新の GitHub リポジトリの情報を参考にすすめるとなお良かったかなと思いました。

Setup :: Pcluster Manager Docs

ParallelCluster Manager へログインしてみる

以下のリンクで提供されている CloudFormation テンプレートを利用して自身の AWS アカウントにデプロイするだけ完成するお手軽設計です。

Tokyo (ap-northeast-1)

管理者ユーザー用のメールアドレス登録が必要です。登録したメールアドレス宛に初回のログイン情報がメールで通知されます。本来はMFAを有効化するべきなのですが事前準備が必要なことと、動作確認が目的なため無効ではじめました。多要素認証はSMS(ショートメッセージ)にしか ParallelCluster Manager は対応していません。MFA認証のための事前準備は以下のリンクを参考にしてください。

a. Setup SMS for MFA :: Pcluster Manager Docs

ParallelCluster Manager はユーザー認証の仕組みに Cognito を利用しています。Cognito でワンタイムパスワードを使用した多要素認証をサポートするには ParallelCluster Manager 側で追加実装が必要になるため、現状は SMS 認証のみサポートしているものと思われます。

15分ほどデプロイが完了しました。ParallelCluster Manager のログイン URL と、初回ログイン用のパスワード記載のメールが届きます。

ログイン後、パスワードの変更を矯正されログインすると以下の管理画面へアクセスできます。AWS アカウント上に存在している既存のクラスターが表示されています。

新規クラスターを作成してみる

Create Clusterボタンから Wizard にしたがってクラスターを作成してみます。コンフィグファイルのアップロードをサポートしているため、クラスター作成の実行基盤としても利用できそうですね。

クラスターの基本設定をします。VPC は AWS アカウントに存在している VPC から選択できます。通常コンフィグを作成するときは VPC ID を入力しないといけないですから便利です。あと AD 連携の設定も用意されていますね。

ヘッドノードの基本設定をします。Remote Console Enabledを有効化するとセッションマネージャーで接続用の IAM ポリシーがアタッチされました。(図の下の方)ParallelCluster Manager の Web コンソールから直接セッションマネージャーで接続できるボタンが用意されているため、有効化しておくと楽にヘッドノードへ接続できるようになります。

共有ストレージの設定をします。新規ストレージを作成してマウントできます。クラスターの運用を考慮するとクラスターのコンフィグ内でストレージを作成するのではなく、別途作成したストレージをマウントした方が良いです。ベストプラクティスでも同様のことが書かれています。ですのでここではストレージはなにも選択しないですすめます。

Best practices: moving a cluster to a new AWS ParallelCluster minor or patch version

Best practices - AWS ParallelCluster

コンピュートノード(Queue)の設定です。サブネットも選択でき、選択画面ではサブネットの Name タグが表示されているため選択がひじょうに 便利です。セッションマネージャーで接続用の IAM ポリシー追加のチェックはなかったので、必要であれば IAM Policies の欄に ARN を入力するようです。ヘッドノードは日常的にログインしますが、コンピュートノードに接続するのはトラブル時が多い思いますのでマストではないです。

ポチポチ選択しただけでいつものコンフィグが生成されています。素晴らしい。

Dry Runボタンがあったので試してみました。チェックできるのはいいですね。

Createボタンをクリックしてクラスターを作成します。

10分程度待つとクラスターの作成が完了しました。

補足 クラスター作成時にタイムアウト

最初Createボタンを押したとき、Endpoint request time outで作成に失敗しました。

対応方法はBackボタンで画面を戻して、Refresh AWS Configがある画面で一度クリックして更新かけます。そのあと再度Createをクリックすると正常にクラスターが作成できました。

ジョブをサブミットしてみる

ジョブの実行内容であるスクリプトを作成するためヘッドノードへログインします。クラスターを選択してShellをクリックするとセッションマネージャーでヘッドノードへログインできます。ジョブのサブミットは Web コンソールから実行してみます。

dateコマンドを実行するテストスクリプトを作成しスクリプトのパスを確認します。

$ vi test.sh
$ pwd
/home/ubuntu

Web コンソールに戻りジョブをサブミットしてみます。スクリプトを編集するためにヘッドノードへログインしたならsbatchでサブミットした方が早い気もしますが、規定のジョブを投げる作業なら Web コンソールからもありかもしれません。

sbatchのオプション項目に対応した登録画面が用意されています。スクリプトのパスは指定しないといけないです。Run a Command(instead of script)を有効にするとコマンドを直接入力もできました。通常の HPC 利用でしたらスクリプトありきですけど、今回みたいなテスト実行だとスクリプトをわざわざ用意しなくても大丈夫でした。

Web コンソールからジョブのステータスを確認できます。

コンピュートノードの起動状況も確認できます。

squeue, sinfo相当の情報を Web コンソールで確認できました。

$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
                 1    queue0 test-job   ubuntu CF       1:19      1 queue0-dy-queue0-c5large-1

$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
queue0*      up   infinite      1 alloc# queue0-dy-queue0-c5large-1
queue0*      up   infinite      5  idle~ queue0-dy-queue0-c5large-[2-6]
queue1       up   infinite      4  idle~ queue1-dy-queue1-c6ilarge-[1-4]

そうこうしているうちにジョブが完了してました。ヘッドノードのから実行結果のファイルを確認できました。

$ cat slurm-1.out
Tue Aug 16 07:00:12 UTC 2022

Web コンソールからは実行結果までは確認できません。ジョブが終わったのかどうかはログを確認するしかなさそうです。普段確認するログはすべて項目が用意されています、便利。ジョブ実行、終了ログはslurmctldのログから確認できます。

ログを下までスクロールし最新のログを確認すると、JobId=1 doneのメッセージを確認できます。

以上で ParallelCluster Manager を利用した Web コンソールからのジョブの実行まで完了です。ジョブの終了確認はライトユーザー向けの方法ではないとは思うので他に確認方法があるような気もしてきました。

後片付け

クラスターを作成できるなら削除もできます。クラスターの管理はお手軽ですね。

削除の対象のクラスターを間違いないように注意しましょう。

削除が開始されました。

おわりに

動作確認目的ではじめたので MFA 有効化を妥協したのですが、クラスターの管理するには使い勝手がよかったです。MFA 有効化してクラスターのメンテナンス用の環境として用意してみたいと思いました。