演習 - HPC クラスターのスケジューラ ノードにディスクを追加する
Azure CycleCloud は、クラスター構成を定義するためにテンプレートに依存しています。 既定の実装には、最も一般的なスケジューラ用の組み込みテンプレートが含まれていますが、Azure CycleCloud GitHub リポジトリには他のいくつかのテンプレートがあります。
カスタマイズした Azure CycleCloud テンプレートを使用してクラスターを実装するプロセスをテストしたかったことを思い出してください。 この目的のために、 Microsoft キュレーションされた Slurm プロジェクトをホストする Azure CycleCloud GitHub リポジトリを活用します。 このリポジトリから既存のクラスター テンプレートを変更するには、スケジューラ ノードのストレージ構成を変更し、新しく変更したテンプレートを Azure CycleCloud アプリケーションにインポートし、アプリケーションのグラフィカル インターフェイスを使用してクラスターを作成し、最後にストレージ構成の変更を検証します。
重要
このモジュールの演習を完了するには、次の前提条件を満たす必要があります。
- VM サイズの 3 つのグループで 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 キー ペアの秘密キーを用意します。
注
Azure サブスクリプションでの vCPU クォータの識別と増加については、次のドキュメントを参照してください。
注
このモジュールの最後の演習では、クラスター ノードに直接接続するために秘密キーが必要です。
この演習では、以下のタスクを実行します。
- タスク 1: Azure CycleCloud CLI をインストールして構成する
- タスク 2: Azure CycleCloud Slurm プロジェクトを構成する
- タスク 3: カスタム Azure CycleCloud テンプレートを実装する
- タスク 4: 新しいクラスターを起動し、そのストレージ構成を確認する
タスク 1: Azure CycleCloud CLI をインストールして構成する
この演習以降のほとんどの管理タスクでは、Azure CycleCloud CLI を使用するため、まずそれをインストールして Azure CycleCloud アプリケーションに接続します。 初期セットアップを簡略化するために、Azure Cloud Shell を使用します。
注
または、Azure CycleCloud CLI が既にインストールされている Azure CycleCloud アプリケーションをホストしている Azure VM にサインインすることもできます。
コンピューターから、Azure portal と互換性のある Web ブラウザーを起動し、 Azure portal に移動し、メッセージが表示されたら、このモジュールで使用する Azure サブスクリプションの共同作成者または所有者ロールを持つ Microsoft アカウントまたは Microsoft Entra アカウントで認証します。
注
Azure portal では、最新バージョンの Microsoft Edge、Google Chrome、Mozilla Firefox、Apple Safari など、最新の最新の Web ブラウザーがサポートされています。
Azure portal で、検索テキスト ボックスの横にあるツール バーのアイコンを選択して Cloud Shell を開きます。
Bash または PowerShell のいずれかを選択するように求められたら、[Bash] を選択します。
注
初めて 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注
パス環境変数に関するメッセージは無視し、次の手順に進みます。
次のコマンドを実行して、Azure CycleCloud インスタンスへの接続を確立します。ここで、
<username>と<password>プレースホルダーは、管理者ロールを持つ Azure CycleCloud アプリケーション ユーザー アカウントの資格情報を指定します。cyclecloud initialize --batch --url=https://$PIP --username=<username> --password=<password> --verify-ssl=false注
--verify-sslに設定されたfalseパラメーターは、Azure CycleCloud アプリケーションが自己署名証明書または信頼されていない証明機関の証明書で構成されるシナリオに対応します。次のコマンドを実行して、ロッカーの構成を表示して Azure CycleCloud インスタンスへの接続を確認します。
cyclecloud locker list注
出力には、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 .注
2 番目のコマンドの末尾にピリオドを必ず含めます。
次のコマンドを実行して、既定のロッカーを指定し、プロジェクトをアップロードします (プレースホルダー
<locker_name>を、前のタスクで識別したロッカーの名前 (cc-lab-subscription-storageなど) に置き換えます)。cyclecloud project default_locker <locker_name> cyclecloud project upload注
または、プレースホルダー
cyclecloud project upload <locker_name>がロッカー名を指定する<locker_name>を実行することもできます。注
プロジェクト ファイルの個々のコピーが成功する限り、
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として一覧表示され、失敗した転送は 0 個であることを確認します。
タスク 3: カスタム Azure CycleCloud テンプレートを実装する
次に、フェッチされた GitHub ベースのプロジェクトと互換性のあるサンプル Azure CycleCloud テンプレートをダウンロードして変更します。 これを使用して、スケジューラ ノードに接続され、ネットワーク ファイル システム (NFS) 経由でエクスポートされる追加のディスクを含むカスタム ストレージ構成を定義します。 この変更の後、Azure CycleCloud アプリケーションにインポートします。
注
Web ブラウザーでテンプレートの内容を調べるには、 Azure/cyclecloud-slurm リポジトリに移動します。
お使いのコンピューターで、 Azure Cloud Shell ペインに Bash セッションが表示されている Web ブラウザー ウィンドウ内で、次のコマンドを実行して、作業ディレクトリを新しくフェッチされたリポジトリに変更します。
cd ~/cyclecloud-slurm/templates次のコマンドを実行して、元のクラスター テンプレートのバックアップを作成します。
cp slurm.txt slurm.bak.txt次のコマンドを実行し、ダウンロードしたテンプレートを nano エディターで開きます。
nano slurm.txt注
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注
Windows コンピューターを使用している場合は、 Shift + Insert キーの組み合わせを使用してクリップボードの内容を貼り付けることができます。
注
変更により、プロビジョニング中にヘッド ノードに自動的にマウントされるストライプ ベースのボリュームに 2 つの 128 GB Premium Storage ディスクが定義されます。 ボリュームは /mnt/exports/ mountpoint を使用し、ext4 ファイルシステムとして自動的にフォーマットされます。
Persistent = true設定は、クラスターを終了するとディスクが保持されますが、クラスターを削除すると自動的に削除されることを示します。注
Azure CycleCloud は、ボリュームを Azure マネージド ディスクとして実装します。
Nano エディター インターフェイス内で、 Ctrl + O キーの組み合わせを選択し、 Enter キーを押してから、 Ctrl + X キーの組み合わせを選択して行った変更を保存し、ファイルを閉じます。
注
この時点で、CLI を使用して Azure CycleCloud アプリケーションへの接続を使用して、テンプレートをインポートできます。
次のコマンドを実行して、前のタスクで変更したテンプレートを Azure CycleCloud アプリケーションにインポートします。
cyclecloud import_template -f ~/cyclecloud-slurm/templates/slurm.txt注
このコマンドは、インポートされたテンプレートの名前、スケジューラの状態 (
scheduler: Off -- --) とノードの合計数 (Total nodes: 1) を表示します。
タスク 4: 新しいクラスターを起動し、そのストレージ構成を確認する
この演習を終了するには、Azure CycleCloud アプリケーションにインポートしたテンプレートが、新しいクラスターを作成し、そのヘッド ノードのストレージ構成を確認して、2 つの永続ディスクで構成されるボリュームが含まれていることを確認することで、目的の機能を提供することを確認します。
コンピューターで別のブラウザー ウィンドウを開き、 https://<IP_address> URL に移動します ( <IP_address> プレースホルダーを Azure CycleCloud アプリケーション サーバーのパブリック IP アドレスに置き換えます)。 メッセージが表示されたら、続行することを確認します。
認証を求められたら、Azure CycleCloud CLI の構成に使用したのと同じ Azure CycleCloud アプリケーション ユーザー アカウントの資格情報を指定してサインインします。
Azure CycleCloud グラフィカル インターフェイスで、[ クラスター] ページに移動し、 +を選択します。
[ 新しいクラスターの作成 ] ページで、 Slurm というラベルの付いたアイコンを、各頂点に小さな円を持つ等辺三角形の形式で選択します。
[新しい Slurm クラスター] ページの [概要] タブで、[クラスター名] テキスト ボックスに「contoso-custom-slurm-lab-cluster」と入力します。
[新しい Slurm クラスター] ページの [必須設定] タブで、次の設定を構成し (他の設定は既定値のままにします)、[次へ] を選択します。
設定 価値 リージョン この演習でクラスターをデプロイする Azure リージョンの名前を選択します。 Scheduler VM の種類 [マシンの種類の選択] ポップアップ ウィンドウで [選択] を選択します。 [ SKU 検索 ] テキスト ボックスに「 D4s_v3」と入力します。 結果の一覧で、 D4s_v3 エントリの横にあるチェック ボックスをオンにし、[ 適用] を選択します。 注
カスタム構成に従ってヘッド ノードのディスクをプロビジョニングするために必要な、Azure Storage の Premium レベルをサポートする VM サイズを必ず選択してください。
設定 価値 最大 HPC コア数 「100」と入力します。 最大 HTC コア数 「100」と入力します。 スケールセットあたりの最大 VM 数 「40」と入力します。 サブネット ID [cyclecloud-rg: cyclecloud-rg-vnet-contoso-slurm-lab-cluster-subnet] を選択します。 [新しい Slurm クラスター] ページの [ネットワーク接続ストレージ] タブで、NFS の種類が [組み込み] に設定されていることを確認し、既定値の [サイズ (GB)] が 100 に設定されていることを確認し、[次へ] を選択します。
[新しい Slurm クラスター] ページの [詳細設定] タブで、変更を加えずに使用可能なオプションを確認し、[次へ] を選択します。
[新しい Slurm クラスター] ページの [Cloud-init] タブで、変更を加えずに使用可能なオプションを確認し、[保存] を選択します。
contoso-custom-slurm-lab-cluster ページで、[開始] リンクを選びます。 確認を求められたら、[ OK] を選択します。
スタートアップ プロセスを監視します。
注
このプロセスには、クラスターのマスター ノードの役割を果たす Azure VM のプロビジョニング、Swarm スケジューラのインストール、構成、ディスク ボリュームの作成とマウントが含まれます。 これには 5 分ほどかかる場合があります。
スケジューラ ノードの状態が [準備完了] に変わったら、[ ノード ] タブでそのエントリを選択し、[ 詳細の表示 ] を選択して詳細ビューを表示します。
contoso-custom-slurm-lab-cluster クラスターのポップアップ ウィンドウで、スケジューラを表示し、[ノード] タブに切り替えて、[ボリューム] セクションまでスクロールし、nfs-1 と nfs-2 のエントリがボリューム一覧に表示されていることを確認します。
おめでとうございます! このモジュールの最初の演習が正常に完了しました。 この演習では、カスタマイズした Azure CycleCloud テンプレートに基づいてクラスターを実装しました。 Azure CycleCloud CLI を使用して、Azure CycleCloud GitHub リポジトリでホストされているサンプル プロジェクト (テンプレートのカスタマイズされたコピーを含む) をインポートしました。 次に、Azure CycleCloud グラフィカル インターフェイスを使用してインポートされたテンプレートに基づいてクラスターを作成し、それを開始し、カスタム変更が有効であることを確認しました。
注
このモジュールの次の演習を実行する予定の場合は、この演習でデプロイして構成したリソースを削除しないでください。 次の演習を完了するには、これらのリソースが必要です。