本主题包含有关扩展 HPC Pack 群集以将 Azure Batch 池作为计算资源的信息。 使用这些 Azure Batch 池,可以按需增加 HPC 群集的容量(“突发”)。 有关 Azure Batch 服务的详细信息,请参阅 Azure.com 文档 。
本主题内容:
先决条件
HPC Pack 群集 - 必须至少创建和配置群集的头节点。 从 HPC Pack 2012 R2 Update 3 开始,即可使用突发到 Batch 功能。
Azure 订阅 - 如果还没有订阅,请注册 免费试用版、使用 MSDN 订阅者权益或浏览其他购买选项。
步骤 1:创建 Azure Batch 帐户
Azure Batch 帐户 - 请参阅 创建和管理 Azure Batch 帐户 ,以在 Azure 门户中创建 Batch 帐户。 需要以下帐户信息(在门户中可用)从 HPC Pack 2012 R2 Update 3 突发到 Batch。
Batch 帐户名称
Batch 帐户 URL
Batch 帐户密钥
从 HPC Pack 2016 Update 1 开始,可能需要以下帐户信息根据不同的 Azure Batch 资源分配模式(Batch 服务或用户订阅)和客户端身份验证方法(Batch 访问密钥或 Azure AD)从 HPC Pack 突发到 Batch:
- 使用访问密钥的 Batch Serivce
- Batch 帐户名称
- Batch 帐户 URL
- Batch 帐户密钥
- 使用 Azure AD 的 Batch 服务或用户订阅
- 批处理 AAD 实例
- Batch AAD 租户 ID
- Batch AAD ClientApp Id
- Batch AAD ClientApp 密钥
- Batch 帐户名称
- Batch 帐户 URL
检查下表以确定要选择的 Batch 帐户类型和身份验证方法。 还可以查看 此博客 和 此文档 ,详细了解用户订阅池分配模式以及如何对 Azure Batch 服务使用 Azure AD 身份验证。
帐户类型/池分配模式 | 身份验证方法 | VM 映像类型 | 低优先级 VM | VNet |
---|---|---|---|---|
批处理服务 | 访问密钥/Azure AD | PaaS/IaaS (MarketPlaceImage) / IaaS (通过 Azure AD 的 CustomImage) | 是的 | 是(通过 Azure AD) |
用户订阅 | Azure AD | IaaS (MarketPlaceImage)/ IaaS (CustomImage) | 否 | 是的 |
使用 Azure CLI 创建具有 Batch 服务池分配模式的 Batch 帐户,并使用 Batch 访问密钥进行身份验证,如下所示:
# Authenticate CLI session.
az login
# Select the subscription
az account set -s mysubscription
# Create a resource group.
az group create --name myresourcegroup --___location mylocation
# Let's add a storage account reference to the Batch account for use as 'auto-storage'
# for applications. We'll start by creating the storage account.
az storage account create -g myresourcegroup -n mystorageaccount -l mylocation --sku Standard_LRS
# Create a Batch account.
az batch account create -g myresourcegroup -n mybatchaccount -l mylocation --storage-account mystorageaccount
# Now we can display the details of our created account.
az batch account show -g myresourcegroup -n mybatchaccount
# We can view the access keys to the Batch Account for future client authentication.
az batch account keys list -g myresourcegroup -n mybatchaccount
使用 Azure CLI 创建具有用户订阅池分配模式的 Batch 帐户
# Authenticate CLI session.
az login
# Select the subscription
az account set -s mysubscription
# Allow Azure Batch to access the subscription (one-time operation).
az role assignment create --assignee MicrosoftAzureBatch --role contributor
# Create a resource group.
az group create --name myresourcegroup --___location mylocation
# A Batch account that will allocate pools in the user's subscription must be configured
# with a Key Vault located in the same region. Let's create this first.
az keyvault create --resource-group myresourcegroup --name mykeyvault --___location mylocation --enabled-for-deployment true --enabled-for-disk-encryption true --enabled-for-template-deployment true
# We will add an access-policy to the Key Vault to allow access by the Batch Service.
az keyvault set-policy --resource-group myresourcegroup --name mykeyvault --spn ddbf3205-c6bd-46ae-8127-60eb93363864 --key-permissions all --secret-permissions all
# Now we can create the Batch account, referencing the Key Vault either by name (if they exist in the same resource group) or by its full resource ID.
az batch account create --resource-group myresourcegroup --name mybatchaccount –___location mylocation --keyvault mykeyvault
为 Batch 身份验证配置 Azure AD 并获取 Batch AAD 信息
- 获取 Batch AAD 实例。 如果使用全局 Azure 云,则 AAD 实例为 https://login.microsoftonline.com/.
- 获取 Batch AAD 租户 ID。在 Azure 门户中,单击“ 更多服务”,搜索并选择 “Azure Active Directory”,选择 Active Directory,方法是选择页面右上角的帐户,然后单击“ 属性”。 复制为 目录 ID 提供的 GUID 值。 此值也称为租户 ID。
- 注册 Batch 客户端应用程序并获取 Batch AAD ClientApp ID。
- 在 Azure 门户中,通过在页面右上角选择帐户,选择 Azure AD 租户。 - 选择 “更多服务”,搜索并选择 “应用注册”。 - 单击“ +新建应用程序注册”。 - 填写 名称,选择 Web 应用/API 作为应用程序类型,并填写特定于应用程序的值,例如 https://myAppName 登录 URI。 单击“创建”。 - 成功创建应用程序后,在应用注册列表中选择该应用程序,然后单击“属性”。 复制为 应用程序 ID 提供的 GUID 值,它将用作 Batch AAD ClientApp ID。
- 配置为使用服务主体进行身份验证并获取 Batch AAD ClientApp 密钥。
- 请求应用程序的密钥。 选择在 应用注册列表中创建的应用程序,然后单击“ 密钥”,键入 “密钥说明 ”,然后选择“ 持续时间”,然后单击“ 保存”。 复制显示的值,该值将用作 Batch AAD ClientApp 密钥。 - 将 RBAC 角色分配给应用程序以使用服务主体进行身份验证。 选择“更多服务”,搜索并选择“Batch 帐户”,单击创建的批处理帐户,然后选择“访问控制”(IAM)。 单击“ +添加”,选择“ 参与者角色 ”和已注册的应用程序。 单击“ 保存”。
注释
请注意,Batch 服务模式和 Batch 帐户的用户订阅模式都支持 Azure AD 身份验证。
重要说明:使用获取的以下 Batch AAD 信息配置 Azure AD 后,打开 HPC 群集管理器,在 “配置-> 部署待办事项列表”下,单击“ 设置 Azure Batch 配置 ”以相应地填写表单中的信息,然后单击“ 确定”。 在 HPC Pack 中使用 Azure AD 进行 Batch 身份验证时,需要执行此步骤。
- 批处理 AAD 实例
- Batch AAD 租户 ID
- Batch AAD ClientApp Id
- Batch AAD ClientApp 密钥
或者,可以使用 HPC Powershell cmdlet 设置 Batch AAD 信息,如下所示:
# HPC PowerShell
Set-HpcClusterRegistry -BatchAADInstance '<AAD Instance e.g. https://login.microsoftonline.com/>' -BatchAADTenantId <TenantGUID> -BatchAADClientAppId <AppGUID> -BatchAADClientAppKey '<AppKey>'
步骤 2:创建 Azure Batch 池模板
若要创建 Azure Batch 池模板,请使用 HPC 群集管理器中的“创建节点模板向导”。
创建 Batch 池模板
启动 HPC 群集管理器。
在 “配置”中,在 导航窗格中,单击“ 节点模板”。
在 “作 ”窗格中,单击“ 新建”。
此时会显示“创建节点模板向导”。在“ 选择节点模板类型 ”页上,单击 “Azure Batch 池模板”, 然后单击“ 下一步”。
在“ 指定模板名称 ”页上,键入节点模板的名称,并根据需要为其键入说明。 单击 “下一步” 。
在 “提供 Azure Batch 帐户信息 ”页上,填写 Batch 帐户名称。 如果 Batch 帐户类型为 Batch 服务,请选择 BatchService 作为 Batch 帐户类型。 如果使用 Batch 访问密钥进行身份验证,请填写密钥作为 帐户密钥(如果使用 Azure AD 身份验证),只需将其留空。 如果 Batch 帐户类型为用户订阅,请选择 UserSubscription 作为 Batch 帐户类型。 填写之前获取的 Batch 帐户 URL 和 Azure 存储连接字符串 ,然后单击“ 下一步”。
注释
当需要 AAD 身份验证时,请确保已在 部署 To-do 列表中设置 Batch AAD 实例、Batch AAD 租户 ID、Batch AAD ClientApp ID 和 Batch AAD ClientApp 密钥,否则帐户验证将失败并出现错误“Azure Batch 帐户无效”。 单击“ 下一步”时,请检查 Azure Batch 帐户设置。
在 Azure Batch 自动缩放配置 页上,保留“ 启用自动缩放 ”未选中状态,然后单击“ 下一步”。
在 “配置远程桌面凭据和 SSH ”页上,可以选择提供将在部署期间在 Azure Batch 池计算节点上创建的用户的凭据。 稍后可以使用凭据连接到池计算节点。 对于 Linux 节点,还可以通过 putty.exe将 SSH 公钥和 SSH 私钥文件(.ppk)指定为 SSH 到节点。 请参阅 此处 ,了解如何为 PuTTY 生成公钥和私钥文件。 请注意,如果同时指定密码和 SSH 密钥,则 SSH 密钥将用于连接。 还需要将生成的私钥文件 (.ppk) 复制到 %CCP_HOME%Bin 文件夹,以便从 HPC 群集管理器打开 SSH 到节点。 单击“下一步”。
在 “指定启动脚本 ”页上,使用 HPC Pack 2012 R2 Update 3(可选)指定 Azure Batch 启动任务。
- 命令行 - 在 Azure Batch 计算节点启动时执行的命令
- Blob 源 URL - 之前上传的文件的 Azure 存储位置,该位置会自动下载到 Azure Batch 计算节点
-
本地文件路径 - 下载 Azure Batch 计算节点上文件的位置
在 HPC Pack 2016 Update 1 或更高版本中,根据需要指定要在 Batch 池中的所有 Azure Batch 计算节点上运行的命令行或启动脚本的名称。 目前,仅 Linux 节点支持启动脚本。 例如,如果要在 Batch 池中的所有 Linux 节点上运行名为 startup.sh 的脚本,则需要使用命令行工具 HpcPack.exe 压缩脚本并将其上传到如下所示的 Azure 存储帐户,然后在 命令行中指定 startup.sh:
HpcPack.exe create startup.sh.zip startup.sh HpcPack.exe upload startup.sh.zip /account:<StorageAccountName> /key:<StorageAccountKey>
单击“ 下一步 ”,查看指定的所有模板设置。 单击“ 创建 ”以生成 Azure Batch 池节点模板。
步骤 3:添加 Azure Batch 池
使用 HPC 群集管理器中的“添加节点向导”添加 Batch 池计算节点。
添加 Azure Batch 池
在 HPC 群集管理器的 “资源管理”中,在 “作 ”窗格中,单击“ 添加节点”。 此时会显示“添加节点向导”。
在 “选择部署方法 ”页上,单击“ 添加 Azure Batch 池”, 然后单击“ 下一步”。
在“ 指定 Azure Batch 池信息 ”页上,选择一个 Azure Batch 池模板。 根据所选模板中的 Batch 帐户类型,指定池信息,如下所示:
如果 Batch 帐户类型为 Batch 服务,- 计算节点数 - 新 Azure Batch 池中的计算节点数(虚拟机实例)
- 虚拟机是 专用 VM 还是 低优先级 VM
- 选择 PaaS 或 IaaSMarketPlace 的图像类型。 对于 PaaS,请选择 OS 系列。 例如 Windows Server 2016。 对于 IaaSMarketPlace,请选择 “发布者”、“ 套餐”和 “Sku”。 例如 Canonical、UbuntuServer、16.04-LTS。
- 计算节点的大小 - 每个计算节点 的角色大小 。
- 每个计算节点的最大任务数 - 在每个计算节点上运行的最大并发任务数。 默认数字等于所选角色大小中的核心数。 最大数目是实际核心数的三倍。 请注意,每个计算节点的最大任务数乘以计算节点数等于 Batch 池节点的总核心数。
- 应用包 – (可选)指定已在 Batch 帐户中添加的应用程序包,格式<为 ID>:Version,Id><>:<<Version>,... 如果 Batch 帐户类型为用户订阅,
- 计算节点数 - (如上图)
- 选择 IaaSMarketPlace 或 IaaSCustomImage 的图像类型。 对于 IaaSMarketPlace,请选择“发布者”、“套餐”和“Sku”。 例如 Canonical、UbuntuServer、16.04-LTS。 对于 IaaSCustomImage,除了发布服务器、套餐和 Sku 之外,自定义映像资源 ID 还需采用 /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/images/{imageName} 格式
- 计算节点的大小 - (如上图)
- 每个计算节点的最大任务数 - (如上图)
- 应用包 - (如上图)
- VNet – (可选)指定 Batch 池的子网 ID。 请参阅 此文档 ,了解如何创建自定义 VNet 和子网并获取子网 ID。另请查看 本文档中指定的自定义 VNet 的 Batch 要求。
注释
请参阅此文档,了解如何从 Linux VM 捕获映像并获取映像资源 ID。对于自定义 VM 映像或自定义 VNet(请参阅下文),需要通过其访问控制(IAM)将 Batch 客户端应用程序参与者角色显式分配给资源。 或者启动 Batch 池时可能发生“BadRequest”失败。
步骤 4:启动池
必须在池上运行作业之前启动池。
启动 Azure Batch 池
在 资源管理中,在 导航窗格中,单击 “节点”或“Azure Batch 池”。
在 “列表 ”或 “热度地图” 视图中,选择一个或多个 Azure Batch 池。
在 “作 ”窗格中,单击“ 开始”。
此时会显示“ 启动 Azure Batch 池 ”对话框。 单击 “开始”。
节点的状态从 “未部署” 更改为 “预配”。
如果要跟踪预配进度,请选择池,然后在 “详细信息”窗格中,单击“ 预配日志 ”选项卡。应在不到 1 分钟内创建 Azure Batch 池,状态将更改为 脱机。
其他注意事项
监视 Azure Batch 计算节点的状态 - Azure Batch 池准备就绪后,Azure Batch 计算节点仍在创建和启动。 若要监视节点状态,请选择池,然后在 “详细信息”窗格中,单击 “Azure Batch 计算节点”。
远程桌面或 SSH 到计算节点 - 启动 Azure Batch 池中的计算节点(节点状态为 空闲)后,如果已将模板设置配置为执行此作,则可以通过远程桌面或 SSH 连接到每个计算节点,例如,执行一些手动配置或故障排除。 为此,请选择一个或多个 Azure Batch 池,然后在 “作 ”窗格中,单击 “远程桌面/SSH”。 通过 SSH 连接到 Linux 节点时,需要将生成的私钥文件 (.ppk) 复制到客户端计算机上的 %CCP_HOME%Bin 文件夹。
查看启动任务 - 如果在 Azure Batch 池模板中指定了启动任务,在启动 Azure Batch 池后,可以通过运行以下 HPC PowerShell cmdlet 来查看启动任务的详细输出:
Get-HpcBatchPoolStartTask -Name <PoolName>
热度地图视图 - 当 Azure Batch 池正在运行时,查看池的热度地图。 在导航窗格上的 “资源管理 ”中,单击“ 节点”,然后选择“ 热度地图 ”视图。 还可以检查池中 Linux 节点的每个 VM 热度映射。 在导航窗格上的 “资源管理 ”中,单击 “Azure Batch 池”,然后选择“ 热度地图 ”视图。 目前收集了以下性能计数器:
- CPU 使用率
- 磁盘吞吐量
- 可用磁盘空间
- 网络使用情况
- 可用物理内存
.
步骤 5:在池上运行作业
目前,HPC Pack 支持在 Azure Batch 池上运行普通批处理/参数/mpi 作业和 clusrun 命令。 请注意以下有关将 clusrun 与 Batch 配合使用的建议:
在池中没有运行其他作业时,在 Azure Batch 池上运行 clusrun 作业。 如果还有其他正在运行的作业或任务, 则 clusrun 作业可能需要等待正在运行的任务完成。
默认情况下,在 Azure Batch 池上运行的作业不会将任务输出返回到 HPC Pack,因为潜在的性能影响。 可以在作业中定义节点发布任务,以便根据需要检索任务输出。 若要检索任务输出,请通过 HPC PowerShell 更改以下群集属性:
Set-HpcClusterProperty -GetAzureBatchTaskOutput $true
步骤 6:停止池
如果不使用 Batch 池,请停止 Azure 资源。 这会取消预配池计算节点,从而减少使用 Batch 池的成本。
停止池
在 资源管理中,在 导航窗格中, 单击 “节点”或“Azure Batch 池”。
在 “列表 ”或“ 热度映射” 视图中,选择要停止的一个或多个 Azure Batch 池。
在 “作 ”窗格中,单击“ 停止”。
此时会显示“ 停止 Azure Batch 池 ”对话框。 单击停止。
如果要跟踪停止进度,请选择一个节点,然后在 “详细信息”窗格中,单击“ 预配日志 ”选项卡。