创建跨可用性区域的 Azure Batch 池

支持可用性区域的 Azure 区域最少具有三个单独的区域,每个都有其自己的独立电源、网络和冷却系统。 使用虚拟机配置创建 Azure Batch 池时,可以选择预配跨可用性区域的 Batch 池。 创建具有此区域策略的池有助于在发生 Azure 数据中心级故障时保护 Batch 计算节点。

例如,可以在支持三个可用性区域的 Azure 区域中使用区域策略创建池。 如果一个可用性区域中的 Azure 数据中心发生基础结构故障,你的 Batch 池在其他两个可用性区域中仍有正常运行的节点,因此该池仍可用于任务计划。

区域支持和其他要求

在支持可用性区域方面,Batch 与 Azure 保持一致。 若要使用区域选项,必须在受支持的 Azure 区域中创建池。

要跨可用性区域分配 Batch 池,要在其中创建池的 Azure 区域必须在多个区域中支持请求的 VM SKU。 可以通过调用 资源 SKU 列出 API 并检查 resourceSkulocationInfo 字段来对此进行验证。 确保请求的 VM SKU 支持多个区域。

对于用户订阅模式 Batch 帐户,请确保要在其中创建池的订阅对请求的 VM SKU 未施加区域产品/服务限制。 若要确认这一点,请调用资源 SKU 列出 API 并检查 ResourceSkuRestrictions。 如果存在区域限制,可以提交支持票证来删除区域限制。

另请注意,如果某个池已启用节点间通信并使用支持 InfiniBand 的 VM SKU,则不能使用区域策略创建该池。

创建跨可用性区域的 Batch 池

以下示例演示如何创建跨可用性区域的 Batch 池。

备注

使用区域策略创建池时,Batch 服务将尝试跨所选区域中的所有可用性区域分配池;不能指定跨区域的特定分配。

Batch 管理客户端 .NET SDK

pool.DeploymentConfiguration.VirtualMachineConfiguration.NodePlacementConfiguration = new NodePlacementConfiguration()
    {
        Policy = NodePlacementPolicyType.Zonal
    };

Batch REST API

REST API URL

POST {batchURL}/pools?api-version=2021-01-01.13.0
client-request-id: 00000000-0000-0000-0000-000000000000

请求正文

"pool": {
    "id": "pool2",
    "vmSize": "standard_a1",
    "virtualMachineConfiguration": {
        "imageReference": {
            "publisher": "Canonical",
            "offer": "UbuntuServer",
            "sku": "16.040-LTS"
        },
        "nodePlacementConfiguration": {
            "policy": "Zonal"
        }
        "nodeAgentSKUId": "batch.node.ubuntu 16.04"
    },
    "resizeTimeout": "PT15M",
    "targetDedicatedNodes": 5,
    "targetLowPriorityNodes": 0,
    "maxTasksPerNode": 3,
    "enableAutoScale": false,
    "enableInterNodeCommunication": false
}

后续步骤