Microsoft HPC Pack 2016(及更高版本)支持与 Azure Active Directory(Azure AD)集成,以便在 Azure 中部署 HPC Pack 群集的管理员。
按照本文中的步骤执行以下高级任务:
- 将 HPC Pack 群集手动与 Azure AD 租户集成
- 在 Azure 的 HPC Pack 群集中管理和计划作业
将 HPC Pack 群集解决方案与 Azure AD 集成遵循标准步骤来集成其他应用程序和服务。 本文假设你熟悉 Azure AD 中的基本用户管理。 有关详细信息和背景信息。
集成的优点
Azure Active Directory(Azure AD)是一种多租户基于云的目录和标识管理服务,提供对云解决方案的单一登录(SSO)访问权限。
将 HPC Pack 群集与 Azure AD 集成有助于实现以下目标:
- 从 HPC Pack 群集中删除传统的 Active Directory 域控制器。 这可以帮助降低在业务不需要的情况下维护群集的成本,并加快部署过程。
- 利用 Azure AD 带来的以下优势:
单一登录
在 Azure 中使用 HPC Pack 群集的本地 AD 标识
先决条件
在 Azure 虚拟机中部署的 HPC Pack 2016 群集 - 有关步骤,请参阅 在 Azure 中部署 HPC Pack 群集。 需要头节点的 DNS 名称和群集管理员的凭据才能完成本文中的步骤。
注释
HPC Pack 2016 之前的 HPC Pack 版本不支持 Azure Active Directory 集成。
客户端计算机 - 需要 Windows 或 Windows Server 客户端计算机才能运行 HPC Pack 客户端实用工具。 如果只想使用 HPC Pack Web 门户或 REST API 提交作业,则可以使用所选的任何客户端计算机。
HPC Pack 客户端实用工具 - 使用Microsoft下载中心提供的免费安装包在客户端计算机上安装 HPC Pack 客户端实用工具。
步骤 1:将 HPC 群集服务器注册到 Azure AD 租户
登录到 Azure 门户。
如果帐户允许你访问多个 Azure AD 租户,请单击右上角的帐户。 然后将门户会话设置为所需的租户。 必须有权访问目录中的资源。
单击左侧“服务”导航窗格中 的“Microsoft Entra ID ”,单击“ 用户和组”,并确保已创建或配置用户帐户。
在 Microsoft Entra ID 中,单击 “应用注册>新建应用程序注册”。 输入以下信息:
- 名称 - HPCPackClusterServer
- 支持的帐户类型 - 在任何 组织目录中选择帐户(任何Microsoft条目 ID 租户 - 多租户)
- 应用程序类型 - 选择 Web 应用/API
-
重定向 URL - 示例的基 URL,默认为
https://hpcserver
- 单击 “创建” 。
添加应用后,在 “应用注册 ”列表中选择它。 然后单击“ 公开 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 门户。
如果帐户允许你访问多个 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 检查”,以便无需在客户端计算机上导入证书。
现在,可以使用 Azure AD 帐户运行 HPC Pack 命令或使用 HPC Pack 作业管理器 GUI 提交和管理群集作业。 有关作业提交选项,请参阅将 HPC 作业提交到 Azure 中的 HPC Pack 群集。
注释
首次尝试连接到 Azure 中的 HPC Pack 群集时,将显示一个弹出窗口。 输入要登录的 Azure AD 凭据。 然后缓存令牌。 以后连接到 Azure 中的群集将使用缓存令牌,除非身份验证更改或清除缓存。
例如,完成上述步骤后,可以从本地客户端查询作业,如下所示:
Get-HpcJob –State All –Scheduler https://<Azure load balancer DNS name> -Owner <Azure AD account>
适用于使用 Azure AD 集成的作业提交的有用 cmdlet
管理本地令牌缓存
HPC Pack 2016 提供以下 HPC PowerShell cmdlet 来管理本地令牌缓存。 这些 cmdlet 可用于以非交互方式提交作业。 请参阅以下示例:
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 群集,以一个域用户身份运行;对于未加入域的 HPC 群集,以在所有头节点上定义的本地用户身份运行)。
使用以下命令设置凭据:
$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>