次の方法で共有


クラスター ワークロードに応じて Azure の HPC Pack クラスター リソースを自動的に拡張および縮小する

HPC Pack クラスターに Azure "バースト" ノード (Windows と Linux の両方) をデプロイする場合、または Azure VM に HPC Pack クラスターを作成する場合は、クラスター上のワークロードに応じて、ノードやコアなどのクラスター リソースを自動的に拡張または縮小する方法が必要な場合があります。 この方法でクラスター リソースをスケーリングすると、Azure リソースをより効率的に使用し、コストを制御できます。

HPC Pack 2016 以降のバージョンでは、Windows PaaS ノード、Azure IaaS VM ノード、Azure バッチ プール ノード、Azure VM スケール セット ノードなど、Azure クラウドを実行している HPC Pack コンピューティング ノードを自動的に拡張および縮小できます。 ただし、ノードの種類によって、自動拡張の縮小ロジックは異なります。 概要を次に示します。

ノードの種類 有効にする方法 前提 監視方法
Azure PaaS ノード PowerShell コマンドレット を する
Set-HpcClusterProperty -EnableGrowShrink 1
1. Azure PaaS ノードのノード テンプレート
2. クラスターに追加されたノード
ClusterManager の [自動拡張圧縮レポート] --> リソース管理 --> 操作 -- azureOperations>
Azure IaaS ノード PowerShell コマンドレット を する
Set-HpcClusterProperty -EnableGrowShrink 1
1. 構成された Azure サービス プリンシパル
2. クラスターに追加されたノード
ClusterManager の [自動拡張圧縮レポート] --> リソース管理 --> 操作 -- azureOperations>
Azure VM スケール セット ノード PowerShell コマンドレット を する
Set-HpcClusterProperty -EnableGrowShrink 1
1. 構成された Azure サービス プリンシパル
2. クラスターに追加されたノード
ClusterManager の [自動拡張圧縮レポート] --> リソース管理 --> 操作 -- azureOperations>
Azure Batch プール Azure Batch プール ノード テンプレート Azure Batch プールを開始する必要がある azure portal または Azure Batch Explorer

注:

この機能は、Azure の既存の HPC コンピューティング ノードを開始または停止することによって、Azure リソースを自動的に拡大または縮小するだけで、新しい HPC コンピューティング ノードを自動的に作成したり、既存のノードを削除したりしません。

Azure VM スケール セット ノードの自動スケーリングは、HPC Pack 2016 Update 2 以降でサポートされています。

Azure IaaS VM ノードまたは Azure VM スケール セット ノードの自動スケーリング

HPC Pack クラスター内の Azure IaaS VM ノードまたは Azure VM スケール セット ノードを自動的に拡張または縮小するには、Azure サブスクリプションを管理するための証明書を使用して Azure サービス プリンシパルを構成する必要があります。 PowerShell コマンドまたはクラスター マネージャー GUI を使用して構成できます。

Azure サービス プリンシパルを構成したら、HPC Pack AutoGrowShrink コマンドレット を使用して、自動拡大圧縮を有効にすることができます。

注:

既定では、HPC Pack によって作成された Azure サービス プリンシパルには、サブスクリプション レベルで 共同作成者 ロールが付与されます。HPC Pack クラスター内の Azure リソースのアクセス制御 を参照、ユーザー シナリオに応じて Azure サービス プリンシパルのアクセス許可を手動で再構成できます。

PowerShell を使用して Azure サービス プリンシパルを構成する

  1. クラスターのデプロイ後、リモート デスクトップで 1 つのヘッド ノードに接続します。

  2. 証明書 (秘密キーを含む PFX 形式) を各ヘッド ノードにアップロードし、Cert:\LocalMachine\My にインストールします。 この証明書は、Azure サービス プリンシパルの作成に使用されます。 証明書がない場合は、まず自己署名証明書を作成できます。

  3. 管理者として Azure PowerShell を起動し、1 つのヘッド ノードで次のコマンドを実行します。

    cd $env:CCP_HOME\bin
    
    Connect-AzureRmAccount
    

    アカウントが複数の Azure Active Directory テナントまたは Azure サブスクリプションにある場合は、次のコマンドを実行して、適切なテナントとサブスクリプションを選択できます。

    Connect-AzureRmAccount -TenantId <TenantId> -SubscriptionId <subscriptionId>
    

    次のコマンドを実行して、現在選択されているテナントとサブスクリプションを表示します。

    Get-AzureRMContext
    
  4. 次のスクリプトを実行する

    .\ConfigARMAutoGrowShrinkCert.ps1 -DisplayName "YourHpcPackAppName" -HomePage "https://YourHpcPackAppHomePage" -IdentifierUri "https://YourHpcPackAppUri" -CertificateThumbprint "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" -TenantId xxxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxxxx
    

    where

    DisplayName - Azure Active Application の表示名。 アプリケーションが存在しない場合は、Azure Active Directory に作成されます。

    HomePage - アプリケーションのホーム ページ。 前の例のように、ダミー URL を構成できます。

    IdentifierUri - アプリケーションの識別子。 前の例のように、ダミー URL を構成できます。

    CertificateThumbprint - 手順 2 でヘッド ノードにインストールした証明書の拇印。

    TenantId - Azure Active Directory のテナント ID。 テナント ID は、Azure Active Directory ポータルの [プロパティ] ページ 取得できます。

    ConfigARMAutoGrowShrinkCert.ps1の詳細については、Get-Help .\ConfigARMAutoGrowShrinkCert.ps1 -Detailedを実行します。

  5. 構成後、HPC Powershell コマンドを使用してレジストリ キーの設定 (ApplicationId、TenantId、拇印を含む) を確認できます

    Get-HpcClusterRegistry
    

クラスター マネージャー GUI を使用して Azure サービス プリンシパルを構成する

  1. 1 つのヘッド ノードで HPC Pack クラスター マネージャーを開きます。

  2. [構成 に移動します。展開 to do リスト ページ

  3. [Azure Deployment Configuration設定] をクリックします。

  4. このウィザードを実行すると、Azure サービス プリンシパル、azure リソース グループ 、Azure VM がプロビジョニングされる VNet 、クラスター通信に使用する証明書 構成するのに役立ちます。 ウィザードは次のように実行されます。

    Azure デプロイ設定ウィザードの

構成の検証

Azure サービス プリンシパルを正常に構成すると、HPC Pack を使用して Azure IaaS VM ノードを開始および停止できるようになります。

HPC Pack 2016 Update 2 以降のバージョン実行している場合、Azure IaaS VM ノードまたは Azure VM スケール セット ノードは既に AzureIaaSNodes ノード グループ に存在する必要があります。HPC Cluster Manager GUIから、 の開始または の停止アクションを実行できます。 アクションが実行されると、[操作] の下に [Dispatch Stop Azure VM Operation] または [Starting Azure Virtual Machines operation -->AzureOperations] ビューが表示されます。

HPC Pack Update 1 以前のバージョン で手動で azure にインストール VM がある場合、既定では、オンプレミス ノードとして扱われているため、AzureIaaSNodes ノード グループには含まれません。 この場合は、Stop アクションを実行する必要があります。これにより、サービスはそれらを AzureIaaSNodes ノード グループ に配置し、サービスで拡張および縮小できるようになります。

Azure IaaS VM ノードがまだない場合は、「IaaS ノードの追加 に従って Azure IaaS ノード テンプレートを作成し、IaaS VM ノードをクラスターに追加できます。

Azure PaaS ノードの自動スケーリング

HPC Pack クラスターによる Azure Windows PaaS ノードの自動縮小を有効にする前に、Azure ノード テンプレートを確認し、時間スケジュールベースではなく、Azure PaaS ノードが手動で開始および停止するように構成されていることを確認する必要があります。

HPC Pack の自動拡張圧縮サービスでは、クラスターに新しいリソースが追加されることはありません。 したがって、Azure PaaS ノード テンプレートを作成した後は、まず次の方法でノードをクラスターに追加する必要があります。

  1. HPC クラスター マネージャーを起動し、[リソース管理の] ウィンドウ 移動します
  2. [ノード 追加]をクリックします。アクション ウィンドウ、ウィザードから [Windows Azure ノードの追加] を選択します。
  3. ウィザードの [完了]をクリックすると、多数のノードがデプロイされていない 状態 クラスターに追加されます
  4. HPC Pack AutoGrowShrink コマンドレット 使用して自動拡大圧縮を有効にする

注:

HPC Pack は、キューに登録されたジョブのリソースを増やすときに、手順 3 で追加したノードの数を増やします。 クラスターにリソースを追加することはありません。 そのため、サブスクリプションの容量を確認し、クラスターに適切な数のノードを追加できます。

Azure Batch プールの自動スケーリング

HPC Pack で Azure Batch プール テンプレートを作成する場合、既定では、プールに対して既定の自動スケール式が定義されます。 ただし、このドキュメント を参照して、独自のスケール式とバッチ ノード テンプレートの更新を定義することもできます。

クラスターの自動拡張と縮小プロパティを設定するための HPC PowerShell コマンド

次に示すのは、AutoGrowShrink 設定し、その動作を追加のパラメーターで調整するための HPC PowerShell コマンドの例です。 設定の完全な一覧については、この記事で後述 AutoGrowShrink パラメーターの を参照してください。

これらのコマンドを実行するには、クラスター ヘッド ノードで HPC PowerShell を管理者として起動します。

AutoGrowShrink の現在の設定を表示するには

Get-HpcClusterProperty –AutoGrowShrink

AutoGrowShrink プロパティを有効にするには

Set-HpcClusterProperty –EnableGrowShrink 1

AutoGrowShrink プロパティを無効にするには

Set-HpcClusterProperty –EnableGrowShrink 0

分単位で拡大間隔を変更するには

Set-HpcClusterProperty –GrowInterval <interval>

圧縮間隔を分単位で変更するには

Set-HpcClusterProperty –ShrinkInterval <interval>

AutoGrowShrink の現在の構成を表示するには

Get-HpcClusterProperty –AutoGrowShrink

AutoGrowShrink からノード グループを除外するには

Set-HpcClusterProperty –ExcludeNodeGroups <group1,group2,group3>

注:

このパラメーターは HPC Pack 2016 以降でサポートされています

AutoGrowShrink パラメーター

Set-HpcClusterProperty コマンドを使用して変更できる AutoGrowShrink パラメーターを次に示します。

  • EnableGrowShrink - AutoGrowShrink プロパティを有効または無効に切り替えます。

  • TasksPerResourceUnit - 1 つのリソース ユニットを拡張するタスクの数 (ジョブのリソース ユニットの種類に基づく)。 既定では、タスクごとに 1 つのリソースユニットを拡張します。

  • GrowThreshold - 自動拡張をトリガーするタスクがキューに登録されているジョブのしきい値。 既定値は 1 です。つまり、キューに登録されたタスクを持つジョブが 1 つ以上ある場合は、ノードが自動的に拡張されます。

  • GrowInterval - 自動拡張をトリガーする間隔 (分)。 既定の間隔は 5 分です。

  • ShrinkInterval - 自動縮小をトリガーする間隔 (分)。 既定の間隔は 5 分です。|

  • ShrinkIdleTimes - ノードがアイドル状態であることを示すために圧縮する継続的なチェックの数。 既定値は 3 回です。 たとえば、ShrinkInterval が 5 分の場合、HPC Pack はノードが 5 分ごとにアイドル状態かどうかを確認します。 すべての 3 つの連続チェック (15 分) でノードがアイドル状態になっている場合、HPC Pack はそのノードを縮小することにします。

  • ExtraNodesGrowRatio - メッセージ パッシング インターフェイス (MPI) ジョブで増加するノードの追加の割合。 既定値は 1 です。つまり、HPC Pack は MPI ジョブのノード 1% を拡張します。

  • GrowByMin - 自動拡張ポリシーがジョブに必要な最小リソースに基づいているかどうかを示すように切り替えます。 既定値は false です。つまり、HPC Pack は、ジョブに必要な最大リソースに基づいてジョブのノードを拡張します。

  • SoaJobGrowThreshold - 自動拡張プロセスをトリガーする受信 SOA 要求のしきい値。 既定値は 50000 です。

    注:

    このパラメーターは、HPC Pack 2012 R2 Update 3 以降でサポートされています。

  • SoaRequestsPerCore 、1 つのコアを拡張するための受信 SOA 要求の -Number。 既定値は 20000 です。

    注:

    このパラメーターは、HPC Pack 2012 R2 Update 3 以降でサポートされています。

  • ExcludeNodeGroups – 指定されたノード グループ内のノードは自動的に拡大および縮小されません。

    注:

    このパラメーターは、HPC Pack 2016 以降でサポートされています。

MPI の例

既定では、HPC Pack は MPI ジョブ用に 1% 追加ノードを増やします (extraNodesGrowRatio1 に設定されています)。 その理由は、MPI で複数のノードが必要になる場合があり、ジョブは、すべてのノードの準備ができたときにのみ実行できることです。 Azure がノードを起動すると、1 つのノードが他のノードよりも起動に時間がかかる場合があり、そのノードの準備が整うのを待っている間に他のノードがアイドル状態になることがあります。 追加のノードを増やすことによって、HPC Pack によってこのリソースの待機時間が短縮され、コストが節約される可能性があります。 MPI ジョブの追加ノードの割合 (たとえば、10%) を増やすには、次のようなコマンドを実行します。

Set-HpcClusterProperty -ExtraNodesGrowRatio 10

SOA の例

既定では、SoaJobGrowThreshold は 50000 に設定され、SoaRequestsPerCore は 20000 に設定されます。 要求数が 7,0000 の SOA ジョブを 1 つ送信すると、キューに登録されたタスクが 1 つあり、受信要求は 7,0000 です。 この場合、HPC Pack はキューに置かれたタスクのコアを 1 つ増やし、受信要求の場合は増加 (70000 - 50000)/20000 = 1 コアになるため、この SOA ジョブのコアは合計で 2 コア増加します。