使用 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)是一种多租户基于云的目录和标识管理服务,提供对云解决方案的单一登录(SSO)访问权限。

将 HPC Pack 群集与 Azure AD 集成有助于实现以下目标:

  • 从 HPC Pack 群集中删除传统的 Active Directory 域控制器。 这可以帮助降低在业务不需要的情况下维护群集的成本,并加快部署过程。
  • 利用 Azure AD 带来的以下优势:
    • 单一登录

    • 在 Azure 中使用 HPC Pack 群集的本地 AD 标识

      Azure Active Directory 环境

先决条件

  • Azure 虚拟机中部署的 HPC Pack 2016 群集 - 有关步骤,请参阅 在 Azure中部署 HPC Pack 2016 群集。 需要头节点的 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 租户

  1. 登录到 Azure 门户

  2. 如果帐户允许你访问多个 Azure AD 租户,请单击右上角的帐户。 然后将门户会话设置为所需的租户。 必须有权访问目录中的资源。

  3. 在左侧服务导航窗格中单击 Azure Active Directory,单击 用户和组,并确保已创建或配置用户帐户。

  4. Azure Active Directory中,单击 应用注册>新应用程序注册。 输入以下信息:

    • 名称 - HPCPackClusterServer
    • 应用程序类型 - 选择 Web 应用/API
    • 登录 URL- 示例的基 URL,默认为 https://hpcserver
    • 单击“创建”。
  5. 添加应用后,在 应用注册 列表中选择它。 然后单击 设置>属性。 输入以下信息:

    • 多租户选择
    • 应用 ID URI 更改为 https://<Directory_name>/<application_name>。 将 <Directory_name> 替换为 Azure AD 租户的全名,例如 hpclocal.onmicrosoft.com,并将 <application_name> 替换为前面选择的名称,例如 HPCPackClusterServer
  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. Azure Active Directory中,单击 企业应用程序>所有应用程序。 从列表中选择 HPCPackClusterServer

  8. 单击 属性,并将 用户分配更改为 。 单击“ 保存”。

  9. 单击“用户和组>添加用户。 选择用户并选择角色,然后单击 分配。 向用户分配一个可用角色(HpcUsers 或 HpcAdminMirror)。 对目录中的其他用户重复此步骤。 有关群集用户的背景信息,请参阅 管理群集用户

步骤 2:将 HPC 群集客户端注册到 Azure AD 租户

  1. 登录到 Azure 门户

  2. 如果帐户允许你访问多个 Azure AD 租户,请单击右上角的帐户。 然后将门户会话设置为所需的租户。 必须有权访问目录中的资源。

  3. Azure Active Directory中,单击 应用注册>新应用程序注册。 输入以下信息:

    • 名称 - HPCPackClusterClient
    • 应用程序类型 - 选择 本机
    • 重定向 URI - https://hpcclient
    • 单击“创建”。
  4. 添加应用后,在 应用注册 列表中选择它。 复制 应用程序 ID 值并将其保存。 稍后在配置应用程序时需要用到此项。

  5. 单击“设置”>“所需权限>添加>选择 API。 搜索并选择 HpcPackClusterServer 应用程序(在步骤 1 中创建)。

  6. “启用访问”页中,选择 Access HpcClusterServer。 然后单击 完成

步骤 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
    

    其中

    • 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 检查

现在,可以使用 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 群集,以在所有头节点上定义的本地用户身份运行)。

  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
    

    如果未使用 –Credential指定 Submit-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>