演習 - HPC クラスターのスケジューラ ノードにディスクを追加する
Azure CycleCloud でクラスターの構成を定義するには、テンプレートを利用します。 その既定の実装には、最も一般的なスケジューラ用の組み込みテンプレートが含まれていますが、Azure CycleCloud の GitHub リポジトリで他のテンプレートを見つけることができます。
カスタマイズした Azure CycleCloud テンプレートを使用してクラスターを実装するプロセスをテストしようとしていることを思い出してください。 この目的のため、Microsoft によって厳選された Slurm プロジェクトがホストされている Azure CycleCloud GitHub リポジトリを利用します。 このリポジトリにある既存のクラスター テンプレートでスケジューラ ノードのストレージ構成を変更し、新しく変更したテンプレートを Azure CycleCloud アプリケーションにインポートし、アプリケーションのグラフィカル インターフェイスを使用してクラスターを作成し、最後にストレージ構成の変更を検証します。
重要
このモジュールの演習を完了するには、次の前提条件が満たされている必要があります。
- 3 つのグループの VM サイズで vCPU コアを利用できる Azure サブスクリプションを用意します。
- DSv3 シリーズの少なくとも 4 個の vCPU コア
- FSv2 シリーズの少なくとも 100 個の vCPU コア
- NC シリーズの少なくとも 48 個の vCPU コア
- Azure サブスクリプションの所有者ロールまたは共同作成者ロールを持つ Microsoft アカウントまたは Microsoft Entra アカウントを用意します。
- ネットワーク インターフェイスに関連付けられたパブリック IP アドレスを使用してアクセス可能な Azure VM に Azure CycleCloud アプリケーションをデプロイします。
- Azure サブスクリプションへの所有者または共同作成者ロールのレベルのアクセス権で Azure CycleCloud アプリケーションを構成します。
- 管理者ロールを持つ Azure CycleCloud アプリケーション ユーザー アカウントを用意します。
- クラスター ノードをデプロイできる Azure 仮想ネットワーク サブネットを作成します。
- Azure CycleCloud アプリケーションの構成に使用する SSH キー ペアの秘密キーを用意します。
Note
Azure サブスクリプションの vCPU クォータを確認して増やす方法については、次のドキュメントを参照してください。
Note
このモジュールの最後の演習でクラスター ノードに直接接続するには、秘密キーが必要です。
この演習では、以下のタスクを実行します。
- タスク 1: Azure CycleCloud CLI をインストールして構成する
- タスク 2: Azure CycleCloud Slurm プロジェクトを構成する
- タスク 3: カスタム Azure CycleCloud テンプレートを実装する
- タスク 4: 新しいクラスターを起動し、そのストレージ構成を調べる
タスク 1: Azure CycleCloud CLI をインストールして構成する
この演習と後続の演習のほとんどの管理タスクには Azure CycleCloud CLI を使うので、最初にそれをインストールして Azure CycleCloud アプリケーションに接続します。 簡単に初期セットアップを行うには、Azure Cloud Shell を使用します。
Note
または、Azure CycleCloud アプリケーションがホストされている Azure VM にサインインしてもかまいません。そこには、Azure CycleCloud CLI が既にインストールされています。
お使いのコンピューターで Azure portal と互換性のある任意の Web ブラウザーを起動し、Azure portal に移動します。メッセージが表示されたら、このモジュールで使う Azure サブスクリプションでの共同作成者ロールまたは所有者ロールを持つ Microsoft アカウントまたは Microsoft Entra アカウントを使って、認証を行います。
Note
Azure portal では、Microsoft Edge、Google Chrome、Mozilla Firefox、Apple Safari の現在のバージョンなど、ほとんどの一般的な最新の Web ブラウザーがサポートされています。
Azure portal で、検索テキスト ボックスの横にあるツール バーのアイコンを選択して、Cloud Shell を開きます。
Bash または PowerShell の選択を求めるメッセージが表示されたら、[Bash] を選択します。
Note
Azure Cloud Shell を起動するのが初めてで、"ストレージがマウントされません" というメッセージが表示される場合は、この演習で使うサブスクリプションを選んでから、[ストレージの作成] を選びます。
Azure Cloud Shell ペインの Bash セッション内で、次のコマンドを実行して、変数の値を Azure CycleCloud アプリケーション サーバーのパブリック IP アドレスに設定します (プレースホルダー
<public_ip_address>
を、実際のパブリック IP アドレスに置き換えます)。PIP=<public_ip_address>
次のコマンドを実行して、Azure CycleCloud インスタンス固有の CLI インストーラーが含まれる .zip ファイルをダウンロードします。
curl -O --insecure https://$PIP/static/tools/cyclecloud-cli.zip
次のコマンドを続けて実行し、Azure CycleCloud CLI のインストールを実行するスクリプトを抽出して実行します。
unzip ./cyclecloud-cli.zip cd ./cyclecloud-cli-installer ./install.sh
Note
パス環境変数に関するメッセージはすべて無視し、次のステップに進みます。
次のコマンドを実行して Azure CycleCloud インスタンスへの接続を確立します。
<username>
および<password>
プレースホルダーでは、管理者ロールを持つ Azure CycleCloud アプリケーション ユーザー アカウントの資格情報を指定します。cyclecloud initialize --batch --url=https://$PIP --username=<username> --password=<password> --verify-ssl=false
Note
--verify-ssl
パラメーターをfalse
に設定すると、Azure CycleCloud アプリケーションが自己署名証明書または信頼されていない証明機関の証明書で構成されているシナリオに対応します。次のコマンドを実行してロッカーの構成を表示し、Azure CycleCloud インスタンスへの接続を確認します。
cyclecloud locker list
Note
出力に、CycleCloud に登録されている各 Azure サブスクリプション用のロッカーの名前と、個々の Azure Storage アカウントでのそれぞれのコンテナーが含まれている必要があります。 このラボで使用する予定の Azure サブスクリプションに対応するロッカーの名前を記録しておく必要があります。この演習で後ほどそれが必要になります。 コマンドの出力は次のような形式になります (
<locker-name>
プレースホルダーはロッカーの名前を表し、<storage_account_name>
プレースホルダーはそのロッカーをホストしているストレージ アカウントの名前を表し、<container_name>
プレースホルダーはそのストレージ アカウント内のロッカー コンテナーの名前を表します)。<locker-name> (az://<storage_account_name>/<container_name>)
タスク 2: Azure CycleCloud Slurm プロジェクトを構成する
次に、Azure CycleCloud の Slurm サンプル プロジェクトを構成します。 Azure CycleCloud GitHub リポジトリにある既存の Slurm プロジェクトを利用します。 それを Azure Cloud Shell のホーム ディレクトリにフェッチした後、Azure CycleCloud ロッカーにアップロードします。
お使いのコンピューターの、Azure Cloud Shell ペインの Bash セッション内で、次のコマンドを実行して、プロジェクト ディレクトリを作成し、対応する GitHub リポジトリからそこに Slurm プロジェクトをフェッチします。
mkdir ~/cyclecloud-slurm && cd ~/cyclecloud-slurm cyclecloud project fetch https://github.com/Azure/cyclecloud-slurm .
Note
必ず、2 番目のコマンドの末尾にピリオドを含めてください。
次のコマンドを実行して、既定のロッカーを指定し、プロジェクトをそこにアップロードします (
<locker_name>
プレースホルダーは、前のタスクで確認したロッカーの名前 (例:cc-lab-subscription-storage
) に置き換えます)。cyclecloud project default_locker <locker_name> cyclecloud project upload
Note
または、
cyclecloud project upload <locker_name>
を実行してもかまいません。<locker_name>
プレースホルダーではロッカーの名前を指定します。Note
Cannot perform sync due to error: sync must happen between source and destination of the same type, e.g., either file <-> file, or directory/container <-> directory/container
およびUpload failed!
という azcopy 関連のエラー メッセージは、プロジェクト ファイルの個々のコピーが成功していれば無視します。 これを確認するには、ジョブの最終的な状態がCompleted
であり、転送失敗がゼロであることを調べます。
タスク 3: カスタム Azure CycleCloud テンプレートを実装する
次に、フェッチした GitHub ベースのプロジェクトと互換性がある、Azure CycleCloud のサンプル テンプレートをダウンロードして変更します。 それを使用して、スケジューラ ノードにアタッチされ、ネットワーク ファイル システム (NFS) 経由でエクスポートされる追加のディスクを含むカスタム ストレージ構成を定義します。 この変更に続き、Azure CycleCloud アプリケーションにそれをインポートします。
Note
Web ブラウザーで Azure/cyclecloud-slurm リポジトリに移動することで、テンプレートの内容を確認できます。
お使いのコンピューターの、Bash セッションが表示されている Web ブラウザー ウィンドウの Azure Cloud Shell ペインで、次のコマンドを実行して、作業ディレクトリを新しくフェッチしたリポジトリに変更します。
cd ~/cyclecloud-slurm/templates
次のコマンドを実行して、元のクラスター テンプレートのバックアップを作成します。
cp slurm.txt slurm.bak.txt
次のコマンドを実行し、ダウンロードしたテンプレートを nano エディターで開きます。
nano slurm.txt
Note
nano エディターの代わりに、使用可能な他の任意のテキスト エディター (Azure Cloud Shell の組み込みエディターなど) を使用できます。
nano エディター インターフェイスで、
[[node scheduler]]
セクションに移動します。 そのセクション内で[[[volume shared]]]
サブセクションを見つけ、Persistent = ${NFSType == "Builtin"}
の行に移動して、その後に次の内容を追加します。# Add 2 premium disks in a RAID 0 configuration to the NFS export [[[volume nfs-1]]] Size = 128 StorageAccountType = Premium_LRS Mount = nfs Persistent = true [[[volume nfs-2]]] Size = 128 StorageAccountType = Premium_LRS Mount = nfs Persistent = true [[[configuration cyclecloud.mounts.nfs]]] mountpoint = /mnt/exports/lab fs_type = ext4 raid_level = 0
Note
Windows コンピューターを使っている場合は、Shift + Insert キーを使って、クリップボードの内容を貼り付けることができます。
Note
この変更により、プロビジョニングの間にヘッド ノードに自動的にマウントされるストライプベースのボリュームに、2 つの 128 GB Premium ストレージ ディスクが定義されます。 そのボリュームでは /mnt/exports/ マウントポイントが使用され、ext4 ファイル システムとして自動的にフォーマットされます。
Persistent = true
という設定は、ディスクはクラスターを終了しても保持されますが、クラスターを削除すると自動的に削除されることを示します。Note
ボリュームは、Azure CycleCloud によって Azure マネージド ディスクとして実装されます。
Nano エディター インターフェイスで Ctrl + O キーを押し、Enter キーを押してから Ctrl + X キーを押し、行った変更を保存してファイルを閉じます。
Note
この時点で、CLI により Azure CycleCloud アプリケーションへの接続を使用して、テンプレートをインポートできます。
次のコマンドを実行して、前のタスクで変更したテンプレートを Azure CycleCloud アプリケーションにインポートします。
cyclecloud import_template -f ~/cyclecloud-slurm/templates/slurm.txt
Note
このコマンドでは、インポートされたテンプレートの名前、スケジューラの状態 (
scheduler: Off -- --
)、ノードの総数 (Total nodes: 1
) が表示されます。
タスク 4: 新しいクラスターを起動し、そのストレージ構成を調べる
この演習の締めくくりとして、Azure CycleCloud アプリケーションにインポートしたテンプレートが想定どおりに機能していることを確認します。そのために、新しいクラスターを作成し、そのヘッド ノードのストレージ構成を確認して、2 つの永続ディスクで構成されるボリュームが含まれていることを確認します。
お使いのコンピューターで別のブラウザー ウィンドウを開き、https://<IP アドレス> という URL に移動します (<IP アドレス> プレースホルダーは、Azure CycleCloud アプリケーション サーバーのパブリック IP アドレスに置き換えます)。 メッセージが表示されたら、続行を確認します。
認証を求めるメッセージが表示されたら、Azure CycleCloud CLI の構成に使用したものと同じ Azure CycleCloud アプリケーションのユーザー アカウントの資格情報を入力してサインインします。
Azure CycleCloud のグラフィカル インターフェイスで [クラスター] ページに移動し、+ を選択します。
[Create a New Cluster](新しいクラスターの作成) ページで、[Slurm] というラベルのアイコン (各頂点に小さな円が付いた二等辺三角形) を選択します。
[新しい Slurm クラスター] ページの [情報] タブで、[クラスター名] テキスト ボックスに「contoso-custom-slurm-lab-cluster」と入力します。
[New Slurm Cluster](新しい Slurm クラスター) ページの [Required Settings](必須の設定) タブで次の設定を構成し (他の設定は既定値のままにします)、[次へ] を選択します。
設定 Value リージョン この演習でクラスターをデプロイする Azure リージョンの名前を選択します。 Scheduler VM Type (スケジューラの VM の種類) [マシンの種類の選択] ポップアップ ウィンドウで [選択] を選びます。 [SKU Search](SKU の検索) テキスト ボックスに、「D4s_v3」と入力します。 結果の一覧で、D4s_v3 エントリの横にあるチェック ボックスをオンにし、[適用] を選びます。 Note
Premium レベルの Azure Storage をサポートする VM サイズを選択してください。カスタム構成に従ってヘッド ノードのディスクをプロビジョニングするために必要です。
設定 値 最大 HPC コア数 「100」と入力します。 最大 HTC コア数 「100」と入力します。 スケールセットあたりの最大 VM 数 「40」と入力します。 サブネット ID [cyclecloud-rg: cyclecloud-rg-vnet-contoso-slurm-lab-cluster-subnet] を選択します。 [New Slurm Cluster](新しい Slurm クラスター) ページの [Network Attached Storage](ネットワーク接続ストレージ) タブで、[NFS Type](NFS の種類) が [Builtin] に設定されていることを確認し、[100] に設定されている [サイズ (GB)] は既定値のままにして、[次へ] を選択します。
[New Slurm Cluster](新しい Slurm クラスター) ページの [Advanced Settings](詳細設定) タブでは、変更を行わずに使用可能なオプションを確認し、[次へ] を選択します。
[New Slurm Cluster](新しい Slurm クラスター) ページの [cloud-init] タブでは、変更を行わずに使用可能なオプションを確認し、[Save](保存) を選択します。
contoso-custom-slurm-lab-cluster ページで、[Start](開始) リンクを選択します。 確認メッセージが表示されたら、[OK] を選択します。
起動プロセスを監視します。
Note
このプロセスには、クラスターのマスター ノードの役割を果たす Azure VM のプロビジョニング、インストール、Swarm スケジューラの構成と、ディスク ボリュームの作成とマウントが含まれます。 これには 5 分ほどかかる場合があります。
スケジューラ ノードの状態が "準備完了" に変わったら、[ノード] タブでそのエントリを選び、[詳細の表示] を選んで詳細ビューを表示します。
[Showing scheduler in contoso-custom-slurm-lab-cluster cluster](contoso-custom-slurm-lab-cluster クラスターのスケジューラの表示) ポップアップ ウィンドウで、[Node](ノード) タブに切り替え、[Volumes](ボリューム) セクションまでスクロールして、ボリュームの一覧にエントリ nfs-1 と nfs-2 が表示されていることを確認します。
お疲れさまでした。 このモジュールの最初の演習が正常に完了しました。 この演習では、カスタマイズした Azure CycleCloud テンプレートに基づいてクラスターを実装しました。 Azure CycleCloud CLI を使用して、Azure CycleCloud GitHub リポジトリでホストされているサンプル プロジェクト (テンプレートのカスタマイズされたコピーを含む) をインポートしました。 次に、Azure CycleCloud のグラフィカル インターフェイスを使用してインポートしたテンプレートに基づくクラスターを作成し、それを起動して、カスタム変更が有効になったことを確認しました。
Note
このモジュールの次の演習を実行する予定がある場合は、この演習でデプロイおよび構成したリソースを削除しないでください。 次の演習を完了するには、これらのリソースが必要です。