次の方法で共有


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

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

このトピックの内容は以下のとおりです。

[前提条件]

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

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

手順 1: Azure 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
バッチサービス アクセス キー/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] を選択し、アプリケーションに固有の値 (サインオン https://myAppName のなど) を入力します。 [作成] をクリックします。 - アプリケーションが正常に作成されたら、[アプリの登録] の一覧でアプリケーションを選択し、[プロパティ] をクリックします。 アプリケーション 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 クラスター マネージャーを開き、[ 構成] --> [デプロイ 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 が デプロイ To Do リストに既に設定されていることを確認します。または、アカウントの検証が失敗し、"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 を使用して、次のようにスクリプトを圧縮して 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 クラスター マネージャーの [リソース管理] の [操作] ウィンドウで、[ノードの追加] をクリックします。 ノードの追加ウィザードが表示されます。

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

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

    • コンピューティング ノードの数 - 新しい Azure Batch プール内のコンピューティング ノード (仮想マシン インスタンス) の数
    • 仮想マシンが専用 VM低優先度 VM
    • PaaS または IaaSMarketPlace のイメージの種類を選択します。 PaaS の場合は、OS ファミリを選択します。 Windows Server 2016 など。 IaaSMarketPlace の場合は、PublisherOfferSku を選択します。 Canonical、UbuntuServer、16.04-LTS など。
    • コンピューティング ノードのサイズ - 各コンピューティング ノードの ロール サイズ
    • コンピューティング ノードあたりの最大タスク数 - 各コンピューティング ノードで実行する同時実行タスクの最大数。 既定の数は、選択したロール サイズのコア数と同じです。 最大数は、実際のコア数の 3 倍です。 コンピューティング ノードあたりの最大タスク数にコンピューティング ノードの数を掛けた値は、Batch プール ノードの合計コア数と等しい点に注意してください。
    • アプリ パッケージ – 必要に応じて、 <Id>:<Version>,<Id>:<Version>, ... の形式で 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. ノードの状態が [ 未デプロイ] から [ プロビジョニング] に変わります。

    プロビジョニングの進行状況を追跡する場合は、プールを選択し、[ 詳細] ウィンドウで [ プロビジョニング ログ ] タブをクリックします。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: ノードのデプロイ