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) は、クラウド ソリューションへのシングル サインオン (SSO) アクセスを提供するマルチテナント クラウド ベースのディレクトリおよび ID 管理サービスです。
HPC Pack クラスターと Azure AD の統合は、次の目標を達成するのに役立ちます。
- HPC Pack クラスターから従来の Active Directory ドメイン コントローラーを削除します。 これにより、これがビジネスに必要ない場合にクラスターを維持するコストを削減し、デプロイ プロセスを高速化できます。
- Azure AD によってもたらされる次の利点を活用します。
単一サインイン
Azure の HPC Pack クラスターにローカル AD ID を使用する
[前提条件]
Azure 仮想マシンにデプロイされた HPC Pack 2016 クラスター - 手順については、「 Azure での HPC Pack クラスターのデプロイ」を参照してください。 この記事の手順を完了するには、ヘッド ノードの DNS 名とクラスター管理者の資格情報が必要です。
注
AZURE Active Directory 統合は、HPC Pack 2016 より前のバージョンの HPC Pack ではサポートされていません。
クライアント コンピューター - HPC Pack クライアント ユーティリティを実行するには、Windows または Windows Server クライアント コンピューターが必要です。 HPC Pack Web ポータルまたは REST API のみを使用してジョブを送信する場合は、任意のクライアント コンピューターを使用できます。
HPC Pack クライアント ユーティリティ - Microsoft ダウンロード センターから入手できる無料インストール パッケージを使用して、HPC Pack クライアント ユーティリティをクライアント コンピューターにインストールします。
手順 1: HPC クラスター サーバーを Azure AD テナントに登録する
Azure portal にサインインします。
アカウントから複数の Azure AD テナントにアクセスできる場合は、右上隅にあるアカウントをクリックします。 次に、ポータル セッションを目的のテナントに設定します。 ディレクトリ内のリソースにアクセスするためのアクセス許可が必要です。
左側の [サービス] ナビゲーション ウィンドウで [Microsoft Entra ID ] をクリックし、[ ユーザーとグループ] をクリックして、既に作成または構成されているユーザー アカウントがあることを確認します。
Microsoft Entra ID で、[アプリの登録>新しいアプリケーションの登録] をクリックします。 次の情報を入力してください。
- Name - HPCPackClusterServer
- サポートされているアカウントの種類 - 任意の組織のディレクトリでアカウントを選択します (Microsoft Entra ID テナント - マルチテナント)
- アプリケーションの種類 - Web アプリ/API の選択
-
リダイレクト URL - サンプルのベース URL (既定)
https://hpcserver
- Create をクリックしてください。
アプリが追加されたら、[アプリの登録] ボックスの一覧でアプリ を 選択します。 次に、[ API の公開] をクリックします。 次の情報を入力してください。
アプリ ID URI を
https://<Directory_name>/<application_name>
に変更します。<Directory_name
>を Azure AD テナントの完全な名前 (たとえば、hpclocal.onmicrosoft.com
) に置き換え、<application_name>
を前に選択した名前 (例:HPCPackClusterServer
) に置き換えます。[ スコープの追加] をクリックし、次の情報を入力します。
** スコープ名 - user_impersonation。
** 同意できるユーザー - [管理者とユーザー] を選択します。
** 管理者の同意の表示名 と 管理者の同意の説明 - 名前と説明を入力します。
[保存] をクリックします。 保存が完了したら、アプリ ページで [ マニフェスト] をクリックします。
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" } ],
Microsoft Entra ID で、[エンタープライズ アプリケーション>すべてのアプリケーション] をクリックします。 一覧から HPCPackClusterServer を選択します。
[ プロパティ] をクリックし、[ ユーザーの割り当てが必要] を [はい] に変更します。 [保存] をクリックします。
[ユーザーとグループ] をクリック>ユーザーを追加します。 ユーザーを選択してロールを選択し、[ 割り当て] をクリックします。 使用可能なロール (HpcUsers または HpcAdminMirror) のいずれかをユーザーに割り当てます。 ディレクトリ内の追加ユーザーと共にこの手順を繰り返します。 クラスター ユーザーの背景情報については、「クラスター ユーザー の管理」を参照してください。
手順 2: HPC クラスター クライアントを Azure AD テナントに登録する
Azure portal にサインインします。
アカウントから複数の Azure AD テナントにアクセスできる場合は、右上隅にあるアカウントをクリックします。 次に、ポータル セッションを目的のテナントに設定します。 ディレクトリ内のリソースにアクセスするためのアクセス許可が必要です。
Microsoft Entra ID で、[アプリの登録>新しいアプリケーションの登録] をクリックします。 次の情報を入力してください。
- 名前 - HPCPackClusterClient
- アプリケーションの種類 - ネイティブの選択
-
リダイレクト URI -
https://hpcclient
- [作成] をクリックします
アプリが追加されたら、[アプリの登録] ボックスの一覧でアプリ を 選択します。 アプリケーション ID の値をコピーして保存します。 これは、後でアプリケーションを構成するときに必要になります。
[ API のアクセス許可>アクセス許可の追加>組織で使用する API をクリックします。 HpcPackClusterServer アプリケーションを検索して選択します (手順 1 で作成)。 [ 委任されたアクセス許可] をクリックし、[ user_impersonation] を選択し、[ アクセス許可の追加] をクリックします。
アプリ ページで、[ マニフェスト] をクリックします。 マニフェストを編集するには、
allowPublicClient
設定を見つけて値をtrue
に変更し、[保存] をクリックします。
手順 3: HPC クラスターを構成する
Azure の HPC Pack 2016 ヘッド ノードに接続します。
HPC PowerShell を起動します。
次のコマンドを実行します。
Set-HpcClusterRegistry -SupportAAD true -AADInstance https://login.microsoftonline.com/ -AADAppName HpcPackClusterServer -AADTenant <your AAD tenant name> -AADClientAppId <client ID> -AADClientAppRedirectUri https://hpcclient
どこ
-
AADTenant
は、Azure AD テナント名を指定します 。次に例を示します。hpclocal.onmicrosoft.com
-
AADClientAppId
は、手順 2 で作成したアプリのアプリケーション ID を指定します。
-
ヘッド ノードの構成に応じて、次のいずれかの操作を行います。
単一のヘッド ノード 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 の両方のチェックをスキップする" を選択することもできます。
これで、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 つのローカル ユーザーとして実行します)。
資格情報を設定するには、次のコマンドを使用します。
$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>
次に、次のようにジョブを送信します。 ジョブ/タスクは、コンピューティング ノード上の$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
–Credential
がSubmit-HpcJob
で指定されていない場合、ジョブまたはタスクは、ローカル にマップされたユーザーの下で Azure AD アカウントとして実行されます。 (HPC クラスターは、タスクを実行する Azure AD アカウントと同じ名前のローカル ユーザーを作成します)。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>