Azure Active Directory を使用して Azure の HPC Pack クラスターを管理する

Microsoft HPC Pack 2016 (以降のバージョン) では、Azure に HPC Pack クラスターをデプロイする管理者向けの Azure Active Directory (Azure AD) との統合がサポートされています。

次のタスクの概要については、この記事の手順に従ってください。

  • HPC Pack クラスターを Azure AD テナントに手動で統合する
  • Azure の HPC Pack クラスターでジョブのスケジュールを設定して管理する

HPC Pack クラスター ソリューションを Azure AD に統合するには、他のアプリケーションやサービスを統合する標準的な手順に従います。 この記事は、Azure AD での基本的なユーザー管理について理解していることを前提としています。 詳しくは、背景をご覧ください。

統合の利点

Azure Active Directory (Azure AD) は、マルチテナントに対応したクラウド ベースのディレクトリと ID の管理サービスで、クラウド ソリューションへのシングル サインオン (SSO) アクセスを提供します。

HPC Pack クラスターを Azure AD と統合することで、次の目標の達成をサポートします。

  • HPC Pack クラスターから従来の Active Directory ドメイン コント ローラーを削除します。 これにより、ユーザーのビジネスに必要ないクラスターの維持にかかるコストを削減し、デプロイ プロセスを高速化するのに役立ちます。
  • Azure AD との統合により、次の利点が得られます。
    • シングル サインオン

    • Azure の HPC Pack クラスターに AD のローカル ID を使用する

      Azure Active Directory の環境

前提条件

  • Azure 仮想マシンにデプロイされた HPC Pack 2016 クラスター - 手順については、「 Azure に HPC Pack クラスターをデプロイする」を参照してください。 この記事の手順を完了するには、ヘッド ノードの DNS 名とクラスター管理者の資格情報が必要です。

    注意

    Azure Active Directory との統合は、HPC Pack 2016 より前のバージョンではサポートされていません。

  • クライアント コンピューター - HPC Pack クライアント ユーティリティを実行するには、Windows または Windows Server クライアント コンピューターが必要です。 ジョブを送信する目的だけで HPC Pack Web ポータルまたは REST API を使用する場合、自分で選んだクライアント コンピューターを利用できます。

  • HPC Pack クライアント ユーティリティ - HPC Pack クライアント ユーティリティをクライアント コンピューターにインストールします。インストール パッケージは、Microsoft ダウンロード センターから無料で入手できます。

手順 1: HPC クラスター サーバーを Azure AD テナントに登録する

  1. Azure portal にサインインします。

  2. お使いのアカウントで複数の Azure AD テナントにアクセスできる場合は、右上隅でアカウントをクリックします。 その後、ポータル セッションを目的のテナントに設定します。 ディレクトリ内のリソースにアクセスするには、そのディレクトリへのアクセス許可が必要です。

  3. 左側の [サービス] ナビゲーション ウィンドウで [Microsoft Entra ID] をクリックし、[ユーザーとグループ] をクリックして、既に作成または構成されているユーザー アカウントがあることを確認します。

  4. [Microsoft Entra ID] で、[アプリの登録][新しいアプリケーションの登録] の順>クリックします。 次の情報を入力します。

    • [名前] - HPCPackClusterServer
    • サポートされているアカウントの種類 - 任意の組織ディレクトリの [アカウント] を選択します (任意のMicrosoft Entra ID テナント - マルチテナント)
    • [アプリケーションの種類] - [Web アプリ/API] を選びます
    • リダイレクト URL - サンプルのベース URL (既定) https://hpcserver
    • Create をクリックしてください。
  5. アプリが追加された後、[アプリの登録] の一覧でそのアプリを選びます。 次に、[ API の公開] をクリックします。 次の情報を入力します。

    • [アプリケーション ID/URI] を「https://<Directory_name>/<application_name>」に変更します。 を Azure AD テナントの完全な名前 (例: ) に置<Directory_name>き換え、 hpclocal.onmicrosoft.comを、前に選択した名前 (例: HPCPackClusterServer) に置き換えます<application_name>

    • [ スコープの追加] をクリックし、次の情報を入力します。

      ** スコープ名 - user_impersonation

      ** 同意できるユーザー - [ 管理者とユーザー] を選択します。

      ** 同意の表示名と同意の説明管理管理 - 名前と説明を入力します。

  6. [保存] をクリックします。 保存が完了したら、アプリ ページで [マニフェスト] をクリックします。 マニフェストを編集します。appRoles を探し、次のアプリケーション ロールを追加します。その後、[保存] をクリックします。

    "appRoles": [
        {
        "allowedMemberTypes": [
            "User",
            "Application"
        ],
        "displayName": "HpcAdminMirror",
        "id": "61e10148-16a8-432a-b86d-ef620c3e48ef",
        "isEnabled": true,
        "description": "HpcAdminMirror",
        "value": "HpcAdminMirror"
        },
        {
        "allowedMemberTypes": [
            "User",
            "Application"
        ],
        "description": "HpcUsers",
        "displayName": "HpcUsers",
        "id": "91e10148-16a8-432a-b86d-ef620c3e48ef",
        "isEnabled": true,
        "value": "HpcUsers"
        }
    ],
    
  7. [Microsoft Entra ID] で、[エンタープライズ アプリケーション] [すべてのアプリケーション>] をクリックします。 一覧から HPCPackClusterServer を選びます。

  8. [プロパティ] をクリックし、[ユーザーの割り当てが必要][はい] に変更します。 [保存] をクリックします。

  9. [ユーザーとグループ] [ユーザーの追加] の順>にクリックします。 ユーザーとロールを選び、[割り当て] をクリックします。 利用可能な役割 (HpcUsers または HpcAdminMirror) のいずれかをユーザーに割り当てます。 ディレクトリ内の他のユーザーでこの手順を繰り返します。 クラスター ユーザーの背景情報については、「クラスター ユーザーの管理」をご覧ください。

手順 2: HPC クラスター クライアントを Azure AD テナントに登録する

  1. Azure portal にサインインします。

  2. お使いのアカウントで複数の Azure AD テナントにアクセスできる場合は、右上隅でアカウントをクリックします。 その後、ポータル セッションを目的のテナントに設定します。 ディレクトリ内のリソースにアクセスするには、そのディレクトリへのアクセス許可が必要です。

  3. [Microsoft Entra ID] で、[アプリの登録][新しいアプリケーションの登録] の順>クリックします。 次の情報を入力します。

    • [名前] - HPCPackClusterClient
    • [アプリケーションの種類] - [ネイティブ] を選びます
    • リダイレクト URI - https://hpcclient
    • [作成] をクリックします。
  4. アプリが追加された後、[アプリの登録] の一覧でそのアプリを選びます。 [アプリケーション ID] の値をコピーして保存します。 この値は後でアプリケーションを構成するときに必要です。

  5. [API のアクセス許可>] organizationが使用するアクセス許可> API を追加する] をクリックします。 (手順 1 で作成した) HpcPackClusterServer アプリケーションを探して選びます。 [ 委任されたアクセス許可] をクリック し、[user_impersonation] を選択し、[ アクセス許可の追加] をクリックします。

  6. アプリ ページで、[ マニフェスト] をクリックします。 設定を見つけて値を にallowPublicClienttrue変更してマニフェストを編集し、[保存] をクリックします。

手順 3: HPC クラスターを構成する

  1. Azure で HPC Pack 2016 ヘッド ノードに接続します。

  2. HPC PowerShell を起動します。

  3. 次のコマンドを実行します。

    
    Set-HpcClusterRegistry -SupportAAD true -AADInstance https://login.microsoftonline.com/ -AADAppName HpcPackClusterServer -AADTenant <your AAD tenant name> -AADClientAppId <client ID> -AADClientAppRedirectUri https://hpcclient
    

    where

    • AADTenant は Azure AD のテナント名を指定します (hpclocal.onmicrosoft.com など)。
    • AADClientAppId では、手順 2 で作成したアプリのアプリケーション ID を指定します。
  4. ヘッド ノードの構成に応じて、次のいずれかを行います。

    • 単一ヘッド ノードの HPC Pack クラスターでは、HpcScheduler サービスを再起動します。

    • 複数のヘッド ノードを持つ HPC Pack クラスターで、ヘッド ノードで次の PowerShell コマンドを実行して 、HpcSchedulerStateful サービスを 再起動します。

    Connect-ServiceFabricCluster
    
    Move-ServiceFabricPrimaryReplica –ServiceName "fabric:/HpcApplication/SchedulerStatefulService"
    
    

手順 4: ジョブを管理してクライアントからジョブを送信する

HPC Pack クライアント ユーティリティを自分のコンピューターにインストールするには、Microsoft ダウンロード センターから HPC Pack 2016 のセットアップ ファイル (完全インストール) をダウンロードします。 インストールを開始するときに、 HPC Pack クライアント ユーティリティのセットアップ オプションを選択します。

クライアント コンピューターを準備するには、クライアント コンピューターで HPC クラスターをセットアップする間に使用する証明書をインストールします。 標準の Windows 証明書管理手順を使用して、証明書 – 現在のユーザー>信頼されたルート証明機関 ストアにパブリック証明書をインストールします。

ヒント

クライアントのセットアップ中に、証明書 CN がスケジューラ URL と一致しない場合は、CN 検証を選択する必要がある場合があります。 クライアント コンピューターに証明書をインポートする必要がないように、"CA と CN の両方のチェックをスキップする" を選択することもできます。

CA と CN のチェックをスキップする

これで HPC Pack のコマンドを実行するか、HPC Pack のジョブ マネージャー GUI を使用して、Azure AD アカウントでクラスターのジョブを送信および管理できます。 ジョブの送信オプションについては、Azure の HPC Pack クラスターに HPC のジョブを送信する方法に関する記事をご覧ください。

注意

初めて Azure の HPC Pack クラスターに接続しようとすると、ポップアップ ウィンドウが表示されます。 Azure ADの資格情報を入力してログインします。 トークンがキャッシュされます。 Azure 内のクラスターへの後の接続では、認証が変更されるか、キャッシュがクリアされない限り、キャッシュされたトークンが使用されます。

たとえば、前の手順を完了すると、次のようにしてオンプレミスのクライアントからジョブをクエリできます。

Get-HpcJob –State All –Scheduler https://<Azure load balancer DNS name> -Owner <Azure AD account>

Azure AD との統合により使用できるジョブ送信用の便利なコマンドレット

ローカルのトークン キャッシュを管理する

HPC Pack 2016 には、ローカルのトークン キャッシュを管理する次の HPC PowerShell コマンドレットが用意されています。 これらのコマンドレットは、非対話形式でジョブを送信するのに便利です。 次の例を参照してください。

Remove-HpcTokenCache

$SecurePassword = "<password>" | ConvertTo-SecureString -AsPlainText -Force

Set-HpcTokenCache -UserName <AADUsername> -Password $SecurePassword -scheduler https://<Azure load balancer DNS name>

Azure AD アカウントを使用してジョブを送信するための資格情報を設定する

場合によっては、HPC クラスター ユーザーの下でジョブを実行する場合があります (ドメインに参加している HPC クラスターの場合は 1 つのドメイン ユーザーとして実行し、ドメインに参加していない HPC クラスターの場合は、すべてのヘッド ノードで定義されている 1 つのローカル ユーザーとして実行します)。

  1. 次のコマンドを使用して、資格情報を設定します。

    $localUser = "<username>"
    
    $localUserPassword="<password>"
    
    $secpasswd = ConvertTo-SecureString $localUserPassword -AsPlainText -Force
    
    $mycreds = New-Object System.Management.Automation.PSCredential ($localUser, $secpasswd)
    
    Set-HpcJobCredential -Credential $mycreds -Scheduler https://<Azure load balancer DNS name>
    
  2. その後、次のようにジョブを送信します。 ジョブとタスクは、$localUser 計算ノードで実行されます。

    $emptycreds = New-Object System.Management.Automation.PSCredential ($localUser, (new-object System.Security.SecureString))
    ...
    $job = New-HpcJob –Scheduler https://<Azure load balancer DNS name>
    
    Add-HpcTask -Job $job -CommandLine "ping localhost" -Scheduler https://<Azure load balancer DNS name>
    
    Submit-HpcJob -Job $job -Scheduler https://<Azure load balancer DNS name> -Credential $emptycreds
    

    –CredentialSubmit-HpcJob で指定されていない場合、ジョブとタスクはローカルで Azure AD アカウントとしてマッピングされているユーザーの下で実行されます (HPC クラスターが Azure AD アカウントと同じ名前のローカル ユーザーを作成してタスクを実行します)。

  3. HPC Pack 2016 Update 2 以降では、ユーザーがクロス ノード MPI ジョブを実行するために相互信頼キーが自動的に生成されるため、資格情報の拡張データを設定する必要はありません。 ただし、まだ以前のバージョンを使用している場合は、次のように Azure AD アカウントの拡張データを設定できます。

    • Azure AD アカウント自体の拡張データを設定する

      Set-HpcJobCredential -Scheduler https://<Azure load balancer DNS name> -ExtendedData <data> -AadUser
      
    • 拡張データを設定し HPC クラスター ユーザーとして実行する

      Set-HpcJobCredential -Credential $mycreds -Scheduler https://<Azure load balancer DNS name> -ExtendedData <data>