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

HPC Pack 群集与 Azure AD 集成可帮助用户实现以下目标:

  • 从 HPC Pack 群集中删除传统的 Active Directory 域控制器。这可以帮助减少维护群集的成本(如果这对于业务是不必要的)并加速执行部署过程。
  • 利用 Azure AD 带来的以下好处:

    • 单一登录
    • 对 Azure 中的 HPC Pack 群集使用本地 AD 标识

先决条件

  • 在 Azure 虚拟机中部署的 HPC Pack 2016 群集 - 需要获得头节点的 DNS 名称和群集管理员的凭据才能完成本文中的步骤。

    Note

    在 HPC Pack 2016 之前的 HPC Pack 版本中不支持 Azure Active Directory 集成。

  • 客户端计算机 - 需要有可运行 HPC Pack 客户端实用工具的 Windows 或 Windows Server 客户端计算机。如果只想使用 HPC Pack Web 门户或 REST API 来提交作业,则可以使用自选的任意客户端计算机。

  • HPC Pack 客户端实用工具 - 使用 Microsoft 下载中心提供的免费安装包在客户端计算机上安装 HPC Pack 客户端实用工具。

步骤 1:将 HPC 群集服务器注册到 Azure AD 租户

  1. 登录 Azure 经典管理门户。
  2. 在左侧菜单中单击“Active Directory”,然后单击订阅中所需的目录。你必须有权访问该目录中的资源。
  3. 单击“用户”,并确保有用户帐户已创建或已配置。
  4. 单击“应用程序”>“添加”,然后单击“添加我的组织正在开发的应用程序”。在向导中输入以下信息:

    • 名称 - HPCPackClusterServer
    • 类型 - 选择“Web 应用程序和/或 Web API”
    • 登录 URL - 示例的基 URL,默认情况下为 https://hpcserver
    • 应用 ID URI - https://<Directory_name>/<application_name>。将 <Directory_name> 替换为 Azure AD 租户的完整名称(例如 hpclocal.partner.onmschina.cn),并将 <application_name> 替换为以前选择的名称。
  5. 添加应用后,单击“配置”。配置以下属性:

    • 对于“应用程序属于多租户型”,选择“是”
    • 对于“访问应用需要进行用户分配”,选择“是”。
  6. 单击“保存”。完成保存后,单击“管理清单”。此操作将下载应用程序的清单 JavaScript 对象表示法 (JSON) 文件。通过找到 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. 保存文件。然后在门户中,单击“管理清单”>“上载清单”。然后,可以上载编辑的清单。

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

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

  1. 登录 Azure 经典管理门户。
  2. 在左侧菜单中单击“Active Directory”,然后单击订阅中所需的目录。你必须有权访问该目录中的资源。
  3. 单击“应用程序”>“添加”,然后单击“添加我的组织正在开发的应用程序”。在向导中输入以下信息:

    • 名称 - HPCPackClusterClient
    • 类型 - 选择“本机客户端应用程序”
    • 重定向 URI - http://hpcclient
  4. 添加应用后,单击“配置”。复制“客户端 ID”值并将其保存。稍后在配置应用程序时将需要此值。

  5. 在“针对其他应用程序的权限”中,单击“添加应用程序”。搜索并添加 HpcPackClusterServer 应用程序(在步骤 1 中创建)。

  6. 在“委派权限”下拉列表中,选择“访问 HpcClusterServer”。然后单击“保存”。

步骤 3:配置 HPC 群集

  1. 连接到 Azure 中的 HPC Pack 2016 头节点。

  2. 启动 HPC PowerShell。

  3. 运行以下命令:

    复制
    Set-HpcClusterRegistry -SupportAAD true -AADInstance https://login.chinacloudapi.cn/ -AADAppName HpcClusterServer -AADTenant <your AAD tenant name> -AADClientAppId <client ID> -AADClientAppRedirectUri http://hpcclient

    其中

    • AADTenant 指定 Azure AD 租户名称,例如 hpclocal.partner.onmschina.cn
    • AADClientAppId 指定在步骤 2 中创建的应用的客户端 ID。
  4. 重新启动 HpcSchedulerStateful 服务。

    在具有多个头节点的群集中,可以在头节点上运行以下 PowerShell 命令,切换 HpcSchedulerStateful 服务的主副本:

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

步骤 4:从客户端管理和提交作业

若要在计算机上安装 HPC Pack 客户端实用工具,请从 Microsoft 下载中心下载 HPC Pack 2016 安装程序文件(完整安装)。开始安装时,请选择针对 HPC Pack 客户端实用工具的安装选项。

若要准备客户端计算机,请在客户端计算机上安装在 HPC 群集安装过程中使用的证书。使用标准 Windows 证书管理过程将公共证书安装到“证书 - 当前用户”>“受信任根证书颁发机构”存储。

现在可以运行 HPC Pack 命令或通过 HPC Pack 作业管理器 GUI 使用 Azure AD 帐户提交和管理群集作业。有关作业提交选项,请参阅将 HPC 作业提交到 Azure 中的 HPC Pack 群集。

Note

首次尝试连接到 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

    如果使用 Submit-HpcJob 时未指定 -Credential,则作业或任务在本地映射为 Azure AD 帐户的用户下运行。(HPC 群集创建的本地用户与用于运行任务的 Azure AD 帐户同名。)

  3. 为 Azure AD 帐户设置扩展的数据。使用 Azure AD 帐户在 Linux 节点上运行 MPI 作业时,这种做法十分有用。

    • 为 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>

使用 Azure Active Directory 管理 Azure 中的 HPC Pack 群集的更多相关文章

  1. 将 HPC 作业从本地计算机提交到部署在 Azure 中的 HPC Pack 群集

    Note Azure 具有用于创建和处理资源的两个不同的部署模型:Resource Manager 和经典. 这篇文章介绍了如何使用这两种模型,但 Azure 建议大多数最新部署使用 Resource ...

  2. [Windows Azure] What is Windows Azure Active Directory?

    What is Windows Azure Active Directory? Windows Azure Active Directory is a service that provides id ...

  3. Azure Active Directory中的特权身份管理如何运作?

    [TechTarget中国原创] 用户权限不是平等的.有些用户需要有大量权利和特权——通常这些都是管理员.企业在允许特权用户进行管理以及支持活动时,还需要意识到特权用户也有可能犯错.他们会犯错.他们可 ...

  4. 移动服务和 Azure Active Directory 中基于角色的访问控制

    编辑人员注释:本文章由 Matthew Henderson撰写 去年 11月,我们发布了 Azure Active Directory (AAD) 预览版作为移动服务身份提供程序.此举旨在为企业开 ...

  5. 哪些工具能有效管理Azure Active Directory?

    [TechTarget中国原创] 管理Azure Active Directory有四种常见的工具:Azure Web门户.Azure PowerShell.Azure命令行接口和Azure Mana ...

  6. SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理——深入的话需要去折腾Azure Active Directory

    SRV记录 SRV记录 什么情况下会用到SRV记录? [SRV记录用来标识某台服务器使用了某个服务,常见于微软系统的目录管理] SRV记录的添加方式 A.主机记录处格式为:服务的名字.协议的类型 例如 ...

  7. 【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误

    问题描述 为APIM添加AAD Group时候,等待很长很长的时间,结果添加失败.错误消息为: Write Groups ValidationError :Failed to query Azure ...

  8. 简化 Web 应用程序与 Windows Azure Active Directory、ASP.NET 和 Visual Studio 的集成

    大家好! 今天的博文深入讨论我们今天推出的开发人员工具和框架中的一些新功能.我们通过与 ASP.NET 和 Visual Studio 团队合作开发了一些重大的增强功能,让开发人员能够轻松使用 Win ...

  9. Windows Azure Active Directory (3) China Azure AD增加新用户

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的China Azure. 本文是对笔者之前的文档:Windows Azure Active ...

随机推荐

  1. vue传参页面刷新数据丢失问题

    在做vue的时候,经常会遇到组件之间数据的传递问题,通过params或者query传参,但是,当页面刷新的时候,数据会丢失,找不到数据.今天经过总结,解决了这个问题.通过了一下几种情况进行传值: 通过 ...

  2. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  3. linux less命令详情

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more .tail更加的有弹性.在 more 的时候,我们并没有办 ...

  4. python get请求

    #!/usr/bin/python #-*- coding:UTF-8 -*-#coding=utf-8 import requests import time import hashlib impo ...

  5. 第六章 对象作用域与servlet事件监听器

          作用域对象 Servlet上下文监听器 Servlet会话监听器 Servlet请求监听器     一:对象作用域 作用域对象 属性操作方法 作用域范围说明 ServletContext( ...

  6. [总结]多项式求逆代替分治 $\text{FFT}$

    目录 问题提出 求逆代替分治 代码实现 由于我懒得不想学蠢得学不会分治 \(\text{FFT}\) ,发现可以用多项式求逆来完整地代替... 文章节选自分治 FFT 与多项式求逆,转载方便自己查看. ...

  7. Mysql技能之【性能优化方案】

    两个SHOW命令 Mysql服务状态 SHOW GLOBAL STATUS; Mysql配置信息 SHOW VARIABLES: 慢查询 show variables like '%slow%'; s ...

  8. DataGridView列标题(列标头)不能居中的解决方法

    winform DataGridView列标题(列标头)不能完全居中的解决方法,一般列标题的居中我们都使用 DgvDemo.ColumnHeadersDefaultCellStyle.Alignmen ...

  9. C#基础知识回顾:2.使用DbProviderFactory实现多数据库访问

    ADO.Net 2.0中,在System.Data.Common中引入了一系列抽象基类,使得开发人员能够在不依赖具体数据库操作的情况下进行编写数据访问代码,它们分别是DbConnection.DbCo ...

  10. java中那些类是线程安全的?

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...