创建具有指定公共 IP 地址的 Azure Batch 池

在 Azure Batch 中,可在 Azure 虚拟网络 (VNet) 的子网中创建 Batch 池。 通过 Batch 创建的公共 IP 地址可以访问 Batch 池中的虚拟机 (VM)。 这些公共 IP 地址可以在池的生存期内更改。 如果未刷新 IP 地址,则网络设置可能会过时。

可改为创建静态公共 IP 地址的列表以用于池中的虚拟机。 在某些情况下,你可能需要控制公共 IP 地址的列表,以确保它们不会意外更改。 例如,你可能正在使用外部服务(如数据库),该服务限制对特定 IP 地址的访问。

先决条件

注意

Batch 自动在包含公共 IP 地址的资源组中分配其他网络资源。 通常情况下,每 100 个专用节点 Batch 会分配 1 个网络安全组 (NSG) 和 1 个负载均衡器。 这些资源受订阅的资源配额限制。 当使用较大的池时,可能需要为一个或多个此类资源请求增加配额

公共 IP 地址要求

通过以下方法之一创建一个或多个公共 IP 地址:

请确保公共 IP 地址满足以下要求:

  • 在与 Batch 池的帐户相同的订阅和区域中创建公共 IP 地址。
  • 将“IP 地址分配”设置为“静态”。
  • 将 SKU 设置为“标准”。
  • 指定 DNS 名称。
  • 请确保没有其他资源使用这些公共 IP 地址,否则池可能会遇到分配失败的情况。 仅对 VM 配置池使用这些公共 IP 地址。
  • 确保没有安全策略和资源锁限制用户对公共 IP 地址的访问。
  • 为池创建足够的公共 IP 地址,以容纳目标 VM 的数量。
    • 该数目必须至少等于池的 targetDedicatedNodes 和 targetLowPriorityNodes 属性之和。
    • 如果未创建足够的 IP 地址,池会分配部分计算节点,并会发生重设大小错误。
    • 目前,每 100 个 VM Batch 会使用一个公共 IP 地址。
  • 还应创建公共 IP 地址的缓冲区。 缓冲区可以帮助 Batch 进行内部优化,以便纵向缩减。 缓冲区还允许在纵向扩展或纵向缩减失败后更快速地进行纵向扩展。 我们建议添加以下数量的缓冲 IP 地址之一;选择一个数字最大者。
    • 至少添加一个 IP 地址。
    • 或者,在池中添加总公共 IP 地址数量的大约 10%。

重要

创建 Batch 池后,无法添加或更改其公共 IP 地址的列表。 如果要更改列表,则必须删除并重新创建该池。

创建具有公共 IP 地址的 Batch 池

该示例展示了如何通过 Azure Batch 服务 REST API 来创建使用公共 IP 地址的池。

REST API URI:

POST {batchURL}/pools?api-version=2020-03-01.11.0
client-request-id: 00000000-0000-0000-0000-000000000000

请求正文:

"pool": {
      "id": "pool2",
      "vmSize": "standard_a1",
      "virtualMachineConfiguration": {
        "imageReference": {
          "publisher": "Canonical",
          "offer": "UbuntuServer",
          "sku": "20.04-LTS"
        },
        "nodeAgentSKUId": "batch.node.ubuntu 20.04"
      },
"networkConfiguration": {
          "subnetId": "/subscriptions/<subId>/resourceGroups/<rgId>/providers/Microsoft.Network/virtualNetworks/<vNetId>/subnets/<subnetId>",
          "publicIPAddressConfiguration": {
            "provision": "usermanaged",
            "ipAddressIds": [
              "/subscriptions/<subId>/resourceGroups/<rgId>/providers/Microsoft.Network/publicIPAddresses/<publicIpId>"
          ]
        },

       "resizeTimeout":"PT15M",
      "targetDedicatedNodes":5,
      "targetLowPriorityNodes":0,
      "taskSlotsPerNode":3,
      "taskSchedulingPolicy": {
        "nodeFillType":"spread"
      },
      "enableAutoScale":false,
      "enableInterNodeCommunication":true,
      "metadata": [ {
        "name":"myproperty",
        "value":"myvalue"
      } ]
    }

后续步骤