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 Active Directory 環境 を
する
前提条件
Azure 仮想マシン にデプロイされた HPC Pack 2016 クラスター - 手順については、「Azureに HPC Pack 2016 クラスターをデプロイする」を参照してください。 この記事の手順を完了するには、ヘッド ノードの 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 テナントにアクセスできる場合は、右上隅にあるアカウントをクリックします。 次に、ポータル セッションを目的のテナントに設定します。 ディレクトリ内のリソースにアクセスするためのアクセス許可が必要です。
左側の [サービス] ナビゲーション ウィンドウ
[Azure Active Directory ] をクリックし、[ユーザーとグループ] をクリックし、既に作成または構成されているユーザー アカウントがあることを確認します。 Azure Active Directory
で、[新しいアプリケーションの登録] [アプリの登録] クリックします。 次の情報を入力してください。 - Name - HPCPackClusterServer
- アプリケーションの種類の - Web アプリ/API の選択
-
サインオン URL- サンプルのベース URL(既定では
https://hpcserver
- Create をクリックしてください。
アプリが追加されたら、アプリの登録 一覧でアプリを選択します。 [設定]
[プロパティ] クリックします。 次の情報を入力してください。 - マルチテナント[はい] を選択します。
-
アプリ ID URI を
https://<Directory_name>/<application_name>
に変更します。<Directory_name
> を azure AD テナントの完全な名前 (たとえば、hpclocal.onmicrosoft.com
) に置き換え、<application_name>
を前に選択した名前 (例:HPCPackClusterServer
) に置き換えます。
[保存] をクリックします。 保存が完了したら、アプリ ページで [マニフェスト
クリックします。 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" } ],
Azure Active Directory
で、[すべてのアプリケーション エンタープライズ アプリケーション ] をクリックします。 一覧から HPCPackClusterServer 選択します。 [プロパティ
] をクリックし、[ユーザーの割り当て 必要な を [はい]に変更します。 [保存] をクリックします。 [ユーザーとグループ >ユーザーの追加] をクリックします。 ユーザーを選択してロールを選択し、[の割り当て]
クリックします。 使用可能なロール (HpcUsers または HpcAdminMirror) のいずれかをユーザーに割り当てます。 ディレクトリ内の追加ユーザーと共にこの手順を繰り返します。 クラスター ユーザーの背景情報については、「クラスター ユーザー の管理」を参照してください。
手順 2: HPC クラスター クライアントを Azure AD テナントに登録する
Azure portal にサインインします。
アカウントから複数の Azure AD テナントにアクセスできる場合は、右上隅にあるアカウントをクリックします。 次に、ポータル セッションを目的のテナントに設定します。 ディレクトリ内のリソースにアクセスするためのアクセス許可が必要です。
Azure Active Directory
で、[新しいアプリケーションの登録] [アプリの登録] クリックします。 次の情報を入力してください。 - 名前 - HPCPackClusterClient
アプリケーションの種類 - ネイティブ選択 - リダイレクト URI
の - Create をクリックしてください。
アプリが追加されたら、アプリの登録 一覧でアプリを選択します。 アプリケーション ID 値をコピーして保存します。 これは、後でアプリケーションを構成するときに必要になります。
[
設定] [必要なアクセス許可] [API 選択] をクリックします。 HpcPackClusterServer アプリケーションを検索して選択します (手順 1 で作成)。 [アクセスの有効化] ページで、[Access HpcClusterServer] を選択します。 次に、[完了]
クリックします。
手順 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>