演習 - 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 が既にインストールされています。

  1. お使いのコンピューターで Azure portal と互換性のある任意の Web ブラウザーを起動し、Azure portal に移動します。メッセージが表示されたら、このモジュールで使う Azure サブスクリプションでの共同作成者ロールまたは所有者ロールを持つ Microsoft アカウントまたは Microsoft Entra アカウントを使って、認証を行います。

    Note

    Azure portal では、Microsoft Edge、Google Chrome、Mozilla Firefox、Apple Safari の現在のバージョンなど、ほとんどの一般的な最新の Web ブラウザーがサポートされています。

  2. Azure portal で、検索テキスト ボックスの横にあるツール バーのアイコンを選択して、Cloud Shell を開きます。

  3. Bash または PowerShell の選択を求めるメッセージが表示されたら、[Bash] を選択します。

    Note

    Azure Cloud Shell を起動するのが初めてで、"ストレージがマウントされません" というメッセージが表示される場合は、この演習で使うサブスクリプションを選んでから、[ストレージの作成] を選びます。

  4. Azure Cloud Shell ペインの Bash セッション内で、次のコマンドを実行して、変数の値を Azure CycleCloud アプリケーション サーバーのパブリック IP アドレスに設定します (プレースホルダー <public_ip_address> を、実際のパブリック IP アドレスに置き換えます)。

    PIP=<public_ip_address>
    
  5. 次のコマンドを実行して、Azure CycleCloud インスタンス固有の CLI インストーラーが含まれる .zip ファイルをダウンロードします。

    curl -O --insecure https://$PIP/static/tools/cyclecloud-cli.zip
    
  6. 次のコマンドを続けて実行し、Azure CycleCloud CLI のインストールを実行するスクリプトを抽出して実行します。

    unzip ./cyclecloud-cli.zip
    cd ./cyclecloud-cli-installer
    ./install.sh
    

    Note

    パス環境変数に関するメッセージはすべて無視し、次のステップに進みます。

  7. 次のコマンドを実行して 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 アプリケーションが自己署名証明書または信頼されていない証明機関の証明書で構成されているシナリオに対応します。

  8. 次のコマンドを実行してロッカーの構成を表示し、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 ロッカーにアップロードします。

  1. お使いのコンピューターの、Azure Cloud Shell ペインの Bash セッション内で、次のコマンドを実行して、プロジェクト ディレクトリを作成し、対応する GitHub リポジトリからそこに Slurm プロジェクトをフェッチします。

    mkdir ~/cyclecloud-slurm && cd ~/cyclecloud-slurm
    cyclecloud project fetch https://github.com/Azure/cyclecloud-slurm . 
    

    Note

    必ず、2 番目のコマンドの末尾にピリオドを含めてください。

  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 リポジトリに移動することで、テンプレートの内容を確認できます。

  1. お使いのコンピューターの、Bash セッションが表示されている Web ブラウザー ウィンドウの Azure Cloud Shell ペインで、次のコマンドを実行して、作業ディレクトリを新しくフェッチしたリポジトリに変更します。

    cd ~/cyclecloud-slurm/templates
    
  2. 次のコマンドを実行して、元のクラスター テンプレートのバックアップを作成します。

    cp slurm.txt slurm.bak.txt
    
  3. 次のコマンドを実行し、ダウンロードしたテンプレートを nano エディターで開きます。

    nano slurm.txt
    

    Note

    nano エディターの代わりに、使用可能な他の任意のテキスト エディター (Azure Cloud Shell の組み込みエディターなど) を使用できます。

  4. 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 マネージド ディスクとして実装されます。

  5. Nano エディター インターフェイスで Ctrl + O キーを押し、Enter キーを押してから Ctrl + X キーを押し、行った変更を保存してファイルを閉じます。

    Note

    この時点で、CLI により Azure CycleCloud アプリケーションへの接続を使用して、テンプレートをインポートできます。

  6. 次のコマンドを実行して、前のタスクで変更したテンプレートを Azure CycleCloud アプリケーションにインポートします。

    cyclecloud import_template -f ~/cyclecloud-slurm/templates/slurm.txt
    

    Note

    このコマンドでは、インポートされたテンプレートの名前、スケジューラの状態 (scheduler: Off -- --)、ノードの総数 (Total nodes: 1) が表示されます。

タスク 4: 新しいクラスターを起動し、そのストレージ構成を調べる

この演習の締めくくりとして、Azure CycleCloud アプリケーションにインポートしたテンプレートが想定どおりに機能していることを確認します。そのために、新しいクラスターを作成し、そのヘッド ノードのストレージ構成を確認して、2 つの永続ディスクで構成されるボリュームが含まれていることを確認します。

  1. お使いのコンピューターで別のブラウザー ウィンドウを開き、https://<IP アドレス> という URL に移動します (<IP アドレス> プレースホルダーは、Azure CycleCloud アプリケーション サーバーのパブリック IP アドレスに置き換えます)。 メッセージが表示されたら、続行を確認します。

  2. 認証を求めるメッセージが表示されたら、Azure CycleCloud CLI の構成に使用したものと同じ Azure CycleCloud アプリケーションのユーザー アカウントの資格情報を入力してサインインします。

  3. Azure CycleCloud のグラフィカル インターフェイスで [クラスター] ページに移動し、+ を選択します。

  4. [Create a New Cluster](新しいクラスターの作成) ページで、[Slurm] というラベルのアイコン (各頂点に小さな円が付いた二等辺三角形) を選択します。

    Screenshot of the Create a New Cluster page of the Azure CycleCloud web application.

  5. [新しい Slurm クラスター] ページの [情報] タブで、[クラスター名] テキスト ボックスに「contoso-custom-slurm-lab-cluster」と入力します。

    Screenshot of the About tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  6. [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] を選択します。
  7. [New Slurm Cluster](新しい Slurm クラスター) ページの [Network Attached Storage](ネットワーク接続ストレージ) タブで、[NFS Type](NFS の種類)[Builtin] に設定されていることを確認し、[100] に設定されている [サイズ (GB)] は既定値のままにして、[次へ] を選択します。

    Screenshot of the Network Attached Storage tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  8. [New Slurm Cluster](新しい Slurm クラスター) ページの [Advanced Settings](詳細設定) タブでは、変更を行わずに使用可能なオプションを確認し、[次へ] を選択します。

    Screenshot of the Advanced Settings tab of the New Slurm Cluster page of the Azure CycleCloud web application.

  9. [New Slurm Cluster](新しい Slurm クラスター) ページの [cloud-init] タブでは、変更を行わずに使用可能なオプションを確認し、[Save](保存) を選択します。

  10. contoso-custom-slurm-lab-cluster ページで、[Start](開始) リンクを選択します。 確認メッセージが表示されたら、[OK] を選択します。

    Screenshot of the Nodes tab page of contoso-slurm-lab-cluster in the off state in the Azure CycleCloud web application.

  11. 起動プロセスを監視します。

    Note

    このプロセスには、クラスターのマスター ノードの役割を果たす Azure VM のプロビジョニング、インストール、Swarm スケジューラの構成と、ディスク ボリュームの作成とマウントが含まれます。 これには 5 分ほどかかる場合があります。

  12. スケジューラ ノードの状態が "準備完了" に変わったら、[ノード] タブでそのエントリを選び、[詳細の表示] を選んで詳細ビューを表示します。

    Screenshot of the Nodes tab of the scheduler node of a contoso-custom-slurm-lab-cluster.

  13. [Showing scheduler in contoso-custom-slurm-lab-cluster cluster](contoso-custom-slurm-lab-cluster クラスターのスケジューラの表示) ポップアップ ウィンドウで、[Node](ノード) タブに切り替え、[Volumes](ボリューム) セクションまでスクロールして、ボリュームの一覧にエントリ nfs-1nfs-2 が表示されていることを確認します。

    Screenshot of the Node tab page of the detailed view of a cluster configured with two additional NFS volumes.

お疲れさまでした。 このモジュールの最初の演習が正常に完了しました。 この演習では、カスタマイズした Azure CycleCloud テンプレートに基づいてクラスターを実装しました。 Azure CycleCloud CLI を使用して、Azure CycleCloud GitHub リポジトリでホストされているサンプル プロジェクト (テンプレートのカスタマイズされたコピーを含む) をインポートしました。 次に、Azure CycleCloud のグラフィカル インターフェイスを使用してインポートしたテンプレートに基づくクラスターを作成し、それを起動して、カスタム変更が有効になったことを確認しました。

Note

このモジュールの次の演習を実行する予定がある場合は、この演習でデプロイおよび構成したリソースを削除しないでください。 次の演習を完了するには、これらのリソースが必要です。