次の方法で共有


Microsoft HPC Pack を使用して Azure Batch にバーストする

このトピックでは、コンピューティング リソースとして Azure Batch プールを含むように HPC Pack クラスターを拡張する方法について説明します。 これらの Azure Batch プールを使用すると、HPC クラスターの容量をオンデマンドで増やすことができます ("バースト")。 詳細については、Azure Batch サービスのドキュメントを参照してください。

このトピックでは、次の操作を行います。

前提条件

  • HPC Pack クラスター - 少なくともクラスターのヘッド ノードを作成して構成する必要があります。 Batch へのバースト機能は、HPC Pack 2012 R2 Update 3 以降で使用できます。

  • Azure サブスクリプション - まだサブスクリプションをお持ちでない場合は、無料試用版にサインアップするか、MSDN サブスクライバー特典を使用するか、その他の購入オプションを確認してください。

手順 1: Azure Batch アカウントを作成する

  • Azure Batch アカウント- Azure portal で Batch アカウントを作成する の Azure Batch アカウントの作成と管理に関する を参照してください。. HPC Pack 2012 R2 Update 3 から Batch にバーストするには、次のアカウント情報 (ポータルで利用可能) が必要です。

    • Batch アカウント名
    • Batch アカウントの URL
    • Batch アカウント キー

HPC Pack 2016 Update 1 以降では、さまざまな Azure Batch リソース割り当てモード (Batch サービスまたはユーザー サブスクリプション) とクライアント認証方法 (Batch アクセス キーまたは Azure AD) に従って、HPC Pack から Batch にバーストするために、次のアカウント情報が必要になる場合があります。

  1. アクセス キーを使用した Batch Serivce
    • Batch アカウント名
    • Batch アカウントの URL
    • Batch アカウント キー
  2. Azure AD を使用した Batch サービスまたはユーザー サブスクリプション
    • Batch AAD インスタンス
    • Batch AAD テナント ID
    • Batch AAD ClientApp Id
    • Batch AAD ClientApp キー
    • Batch アカウント名
    • Batch アカウントの URL

次の表を確認して、選択する Batch アカウントの種類と認証方法を決定します。 このブログ 確認し、このドキュメント して、ユーザー サブスクリプション プールの割り当てモードと Azure Batch サービスに Azure AD 認証を使用する方法の詳細を理解することもできます。

アカウントの種類/プールの割り当てモード 認証方法 VM イメージの種類 優先順位の低い VM VNet
Batch サービス アクセス キー/Azure AD PaaS/IaaS (MarketPlaceImage) / IaaS (Azure AD 経由の CustomImage) はい はい (Azure AD 経由)
ユーザー サブスクリプション Azure AD IaaS (MarketPlaceImage)/IaaS (CustomImage) いいえ はい

次のように、Azure CLI を使用して Batch サービス プール割り当てモードで Batch アカウントを作成し、認証に Batch アクセス キーを使用します。

# Authenticate CLI session.
az login

# Select the subscription
az account set -s mysubscription

# Create a resource group.
az group create --name myresourcegroup --location mylocation

# Let's add a storage account reference to the Batch account for use as 'auto-storage'
# for applications. We'll start by creating the storage account.
az storage account create -g myresourcegroup -n mystorageaccount -l mylocation --sku Standard_LRS

# Create a Batch account.
az batch account create -g myresourcegroup -n mybatchaccount -l mylocation --storage-account mystorageaccount

# Now we can display the details of our created account.
az batch account show -g myresourcegroup -n mybatchaccount

# We can view the access keys to the Batch Account for future client authentication.
az batch account keys list -g myresourcegroup -n mybatchaccount

Azure CLI を使用して、ユーザー サブスクリプション プールの割り当てモードで Batch アカウントを作成する

# Authenticate CLI session.
az login

# Select the subscription
az account set -s mysubscription

# Allow Azure Batch to access the subscription (one-time operation).
az role assignment create --assignee MicrosoftAzureBatch --role contributor

# Create a resource group.
az group create --name myresourcegroup --location mylocation

# A Batch account that will allocate pools in the user's subscription must be configured
# with a Key Vault located in the same region. Let's create this first.
az keyvault create --resource-group myresourcegroup --name mykeyvault --location mylocation --enabled-for-deployment true     --enabled-for-disk-encryption true --enabled-for-template-deployment true

# We will add an access-policy to the Key Vault to allow access by the Batch Service.
az keyvault set-policy --resource-group myresourcegroup --name mykeyvault --spn ddbf3205-c6bd-46ae-8127-60eb93363864 --key-permissions all --secret-permissions all

# Now we can create the Batch account, referencing the Key Vault either by name (if they exist in the same resource group) or by its full resource ID.
az batch account create --resource-group myresourcegroup --name mybatchaccount –location mylocation --keyvault mykeyvault

Batch 認証用に Azure AD を構成し、Batch AAD 情報を取得するには

  1. Batch AAD インスタンス取得します。 グローバル Azure Cloud を使用している場合、AAD インスタンスは https://login.microsoftonline.com/
  2. Batch AAD テナント ID取得します。Azure portal で [その他のサービス] をクリックし、Azure Active Directory検索して選択し、ページの右上隅にあるアカウントを選択して Active Directory を選択し、[プロパティ]クリックします。 ディレクトリ IDに指定された GUID 値をコピーします。 この値はテナント ID とも呼ばれます。
  3. Batch クライアント アプリケーションを登録し、Batch AAD ClientApp Idを取得します。
  • Azure portal で、ページの右上隅にあるアカウントを選択して、Azure AD テナントを選択します。 - [その他のサービス ] を選択し、[アプリの登録]検索して選択します。 - + 新しいアプリケーション登録をクリックします。 - [名]を入力し、[アプリケーションの種類][Web アプリ/ API] を選択し、アプリケーションに固有の値 (サインオン URI など) を入力します。 Create をクリックしてください。 - アプリケーションが正常に作成されたら、[アプリの登録] の一覧でアプリケーションを選択し、[プロパティ] をクリックします。 アプリケーション IDに指定された GUID 値をコピーします。これは Batch AAD ClientApp Idとして使用されます。
  1. 認証にサービス プリンシパルを使用し、Batch AAD ClientApp キーを取得するように構成します。
  • アプリケーションの秘密鍵を要求します。 アプリ登録の一覧で作成したアプリケーションを選択し、[キーの] をクリックし、[キーの説明] 入力し、[期間]選択し、[保存]クリックします。 Batch AAD ClientApp キーとして使用 表示される値をコピーします。 - RBAC ロールをアプリケーションに割り当てて、サービス プリンシパルで認証します。 [その他のサービス選択し、Batch アカウント検索して選択し、作成されたバッチ アカウントをクリックして、アクセス制御 (IAM)を選択します。 [+ADDをクリックし、共同作成者ロール と登録されているアプリケーション 選択します。 [保存] をクリックします。

注:

Azure AD 認証は、Batch アカウントの Batch サービス モードとユーザー サブスクリプション モードの両方でサポートされることに注意してください。

重要な: 次の Batch AAD 情報を使用して Batch 認証用に Azure AD を構成したら、[構成] HPC Cluster Managerを開き、[ デプロイ To Do リスト]で [Azure Batch 構成の設定] をクリックして、必要に応じて情報をフォームに入力し、[OK]クリックします。 この手順は、HPC Pack で Batch 認証に Azure AD を使用する場合に必要です。

  • Batch AAD インスタンス
  • Batch AAD テナント ID
  • Batch AAD ClientApp Id
  • Batch AAD ClientApp キー

または、HPC Powershell コマンドレットを使用して、次に示すように Batch AAD 情報を設定することもできます。

# HPC PowerShell
Set-HpcClusterRegistry -BatchAADInstance '<AAD Instance e.g. https://login.microsoftonline.com/>' -BatchAADTenantId <TenantGUID> -BatchAADClientAppId <AppGUID> -BatchAADClientAppKey '<AppKey>'

手順 2: Azure Batch プール テンプレートを作成する

Azure Batch プール テンプレートを作成するには、HPC クラスター マネージャーでノード テンプレートの作成ウィザードを使用します。

Batch プール テンプレートを作成するには

  1. HPC クラスター マネージャー起動します。

  2. 構成の [ナビゲーション ウィンドウ]で、[ノード テンプレート]クリックします。

  3. [アクション] ウィンドウで、[新しい] をクリックします。
    ノード テンプレートの作成ウィザードが表示されます。

  4. [ノード テンプレートの種類の の選択] ページで、[Azure Batch プール テンプレート 選択] をクリックし、 し、[次へ] をクリックします。

  5. [テンプレート名 指定] ページで、ノード テンプレートの名前を入力し、必要に応じて説明を入力します。 次へ をクリックします。

  6. [Azure Batch アカウント情報の入力] ページで、Batch アカウント名を入力します。 Batch アカウントの種類が Batch Service の場合は、Batch アカウント 種類として BatchService を選択します。 認証に Batch アクセス キーを使用する場合は、アカウント キーとしてキーを入力します。Azure AD 認証を使用している場合は、空白のままにします。 Batch アカウントの種類が [ユーザー サブスクリプション] の場合は、Batch アカウント 種類として [UserSubscription] を選択します。 Batch アカウントの URL と、前に取得した azure Storage 接続文字列 を入力し、[次へクリックします。

注:

AAD 認証が必要な場合は、Batch AAD インスタンス、Batch AAD テナント ID、Batch AAD ClientApp Id、Batch AAD ClientApp Key が Deployment To Do Listに既に設定されているか、アカウントの検証が失敗し、"Azure Batch アカウントが無効です。 [次へ]をクリックすると、Azure Batch アカウントの設定 確認してください。

  1. [Azure Batch 自動スケール構成] ページで、[自動スケール を有効にする] オフのままにして、[次 ] をクリックします。

  2. リモート デスクトップ資格情報と SSH の構成] ページで、必要に応じて、デプロイ時に Azure Batch プールのコンピューティング ノードに作成されるユーザーの資格情報を指定します。 後で資格情報を使用して、プールのコンピューティング ノードに接続できます。 Linux ノードの場合は、SSH 公開キー 指定し、SSH 秘密キー ファイル (.ppk) を して、putty.exe経由でノードに SSH 接続することもできます。 PuTTY の公開キーと秘密キー ファイルを生成する方法については、 こちら を参照してください。 パスワードキーと SSH キーの両方を指定した場合、接続には SSH キーが使用されることに注意してください。 また、生成された秘密キー ファイル (.ppk) を %CCP_HOME%Bin フォルダーにコピーして、HPC クラスター マネージャーからノードへの SSH を開く必要もあります。 次へ をクリックします。

  3. HPC Pack 2012 R2 Update 3 の [スタートアップ スクリプトの指定] ページで、必要に応じて、Azure Batch 開始タスクを指定します。

    • コマンド ライン - Azure Batch コンピューティング ノードの起動時に実行されるコマンド
    • BLOB ソース URL - 以前にアップロードしたファイルの Azure ストレージの場所と、Azure Batch コンピューティング ノードに自動的にダウンロードされるファイル
    • ローカル ファイル パス - Azure Batch コンピューティング ノードでファイルをダウンロードする場所
      HPC Pack 2016 Update 1 以降のバージョンでは、必要に応じて、コマンド ラインまたは Batch プール内のすべての Azure Batch コンピューティング ノードで実行するスタートアップ スクリプトの名前を指定します。 現在、スタートアップ スクリプトは Linux ノードでのみサポートされています。 たとえば、Batch プール内のすべての Linux ノードで起動時に startup.sh という名前のスクリプトを実行する場合は、コマンド ライン ツール HpcPack.exe を使用して、次のようにスクリプトを zip 圧縮して Azure ストレージ アカウントにアップロードし、コマンド ラインで startup.sh を指定する必要があります。
    HpcPack.exe create startup.sh.zip startup.sh 
    HpcPack.exe upload startup.sh.zip /account:<StorageAccountName> /key:<StorageAccountKey>
    
  4. [次 クリックし、指定されたすべてのテンプレート設定を確認します。 [ 作成] をクリックして、Azure Batch プール ノード テンプレートを生成します。

手順 3: Azure Batch プールを追加する

HPC クラスター マネージャーのノードの追加ウィザードを使用して、Batch プールのコンピューティング ノードを追加します。

Azure Batch プールを追加するには

  1. HPC クラスター マネージャーの Resource Managementの [アクション] ウィンドウで、[ノードの追加] クリックします。 ノードの追加ウィザードが表示されます。

  2. 展開方法の選択] ページで、[Azure Batch プール 追加] をクリックし、 し、[次へ] をクリックします。

  3. [Azure Batch プール情報の指定] ページで、Azure Batch プール テンプレートを選択します。 選択したテンプレートの Batch アカウントの種類に従って、プール情報を次のように指定します。
    Batch アカウントの種類が Batch Service の場合、

    • コンピューティング ノードの数 - 新しい Azure Batch プール内のコンピューティング ノード (仮想マシン インスタンス) の数
    • 仮想マシンが専用 VM であるか、低優先度 VM されているか
    • PaaS または IaaSMarketPlace のイメージの種類を選択します。 PaaSの場合は、OS ファミリを選択します。 Windows Server 2016 など。 IaaSMarketPlaceの場合は、[Publisher]、[プラン選択し、skuを します。 Canonical、UbuntuServer、16.04-LTS など。
    • コンピューティング ノードのサイズ - 各コンピューティング ノードの ロール サイズ
    • コンピューティング ノードあたりの最大タスク数 - 各コンピューティング ノードで実行する同時実行タスクの最大数。 既定の数は、選択したロール サイズのコア数と同じです。 最大数は、実際のコア数の 3 倍です。 コンピューティング ノードあたりの最大タスク数にコンピューティング ノードの数を掛けた値は、Batch プール ノードの合計コア数と等しい点に注意してください。
    • アプリ パッケージ – 必要に応じて、<Id>:<バージョン>、<Id>:<バージョン>、... の形式で Batch アカウントに既に追加されているアプリケーション パッケージを指定します。 Batch アカウントの種類がユーザー サブスクリプションの場合、
    • コンピューティング ノードの数 – (上記のように)
    • IaaSMarketPlace または IaaSCustomImage のイメージの種類を選択します。 IaaSMarketPlace の場合は、Publisher、Offer、Sku を選択します。 Canonical、UbuntuServer、16.04-LTS など。 IaaSCustomImage の場合、Publisher、Offer、Sku に加えて、カスタム イメージ リソース ID も /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/images/{imageName} の形式で必要です。
    • コンピューティング ノードのサイズ – (上記のように)
    • コンピューティング ノードあたりの最大タスク数 – (上記と同様)
    • アプリ パッケージ – (上記のような)
    • VNet – 必要に応じて、Batch プールのサブネット ID を指定します。 カスタム VNet とサブネット 作成し、サブネット ID を取得する方法については、このドキュメントの を参照してください。また、このドキュメントで指定されているカスタム VNet の Batch 要件 確認してください。

    注:

    Linux VM からイメージをキャプチャし、イメージ リソース ID を取得する方法については、このドキュメント 参照してください。カスタム VM イメージまたはカスタム VNet (下記参照) の場合は、アクセス制御 (IAM)を使用して、Batch クライアント アプリケーション 共同作成者 ロールをリソースに明示的に割り当てる必要があります。 または、Batch プールの起動時に "BadRequest" エラーが発生する可能性があります。

手順 4: プールを開始する

プールでジョブを実行する前に、プールを開始する必要があります。

Azure Batch プールを開始するには

  1. リソース管理の [ナビゲーション ウィンドウ]で、[ノードの ] または [Azure Batch プールの] をクリックします。

  2. リスト またはヒート マップ ビュー で、1 つ以上の Azure Batch プールを選択します。

  3. [操作] ウィンドウで、[の開始] クリックします。

    [Azure Batch プールの開始] ダイアログ ボックスが表示されます。 [開始] をクリックします。

  4. ノードの状態は、デプロイされていない から Provisioningに変わります。

    プロビジョニングの進行状況を追跡する場合は、プールを選択し、[の詳細ウィンドウ]で、[プロビジョニング ログの] タブ クリックします。Azure Batch プールは 1 分以内に作成する必要があり、状態は オフラインに変わります。

その他の考慮事項

  • Azure Batch コンピューティング ノードの状態を監視- Azure Batch プールの準備ができたら、Azure Batch コンピューティング ノードの作成と開始が続けられます。 ノードの状態を監視するには、プールを選択し、[詳細ウィンドウ]で、[Azure Batch コンピューティング ノード] をクリックします。

  • コンピューティング ノードへのリモート デスクトップまたは SSH - Azure Batch プールのコンピューティング ノードが開始された後 (ノードの状態がアイドル)、テンプレート設定を構成した場合は、リモート デスクトップまたは SSH で各コンピューティング ノードに接続できます 。たとえば、手動構成やトラブルシューティングを実行します。 これを行うには、1 つ以上の Azure Batch プールを選択し、[アクション] ウィンドウで、[リモート デスクトップ/SSH] をクリックします。 SSH介して Linux ノードに接続する場合は、生成された秘密キー ファイル (.ppk) をクライアント コンピューター上の %CCP_HOME%Bin フォルダーにコピーする必要があります。

  • スタートアップ タスクの表示 - Azure Batch プール テンプレートでスタートアップ タスクを指定した場合、Azure Batch プールの起動後に、次の HPC PowerShell コマンドレットを実行して、スタートアップ タスクの詳細な出力を表示できます。

    Get-HpcBatchPoolStartTask -Name <PoolName>   
    
  • ヒート マップ ビュー - Azure Batch プールの実行中に、プールのヒート マップを表示します。 ナビゲーション ウィンドウ [リソース管理] で、[ノード] をクリックし、[ヒート マップ] ビュー 選択します。 プール内の Linux ノードの VM ごとのヒート マップを確認することもできます。 ナビゲーション ウィンドウ [リソース管理] で、[Azure Batch プール] をクリックし、[ヒート マップ] ビュー 選択します。 現在、次のパフォーマンス カウンターが収集されます。

    • CPU 使用率
    • ディスク スループット
    • 空きディスク領域
    • ネットワークの使用状況
    • 使用可能な物理メモリ

手順 5: プールでジョブを実行する

現在、HPC Pack では、Azure Batch プールで通常のバッチ/パラメトリック/mpi ジョブと clusrun コマンドの両方の実行がサポートされています。 Batch で clusrun を使用する場合は、次の推奨事項に注意してください。

  • ジョブがプールで実行されていない場合は、Azure Batch プールで clusrun ジョブを実行します。 他のジョブまたはタスクが実行されている場合、clusrun ジョブは、実行中のタスクが完了するまで待機する必要があります。

  • パフォーマンスへの影響が考えられるため、Azure Batch プールで実行されているジョブは、既定ではタスクの出力を HPC Pack に返しません。 必要に応じて、ジョブでノード解放タスクを定義して、タスクの出力を取得できます。 タスクの出力を取得するには、HPC PowerShell を使用して次のクラスター プロパティを変更します。

    Set-HpcClusterProperty -GetAzureBatchTaskOutput $true  
    

手順 6: プールを停止する

Batch プールを使用していない場合は、Azure リソースを停止します。 これにより、プールのコンピューティング ノードのプロビジョニングが解除され、Batch プールの使用コストが削減されます。

プールを停止するには

  1. リソース管理の [ナビゲーション ウィンドウ] で、[ノードの ] または [Azure Batch プールの] をクリック します。

  2. リスト またはヒート マップ ビュー で、停止する 1 つ以上の Azure Batch プールを選択します。

  3. [操作] ウィンドウで、[の停止] クリックします。

    [Azure Batch プール の停止] ダイアログ ボックスが表示されます。 [停止クリックします。

  4. 停止中の進行状況を追跡する場合は、ノードを選択し、[の詳細ウィンドウ]の [プロビジョニング ログ] タブ クリックします。

関連情報

Microsoft HPC Pack: Node Deployment