Compartir a través de

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

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

可以创建一个静态公网 IP 地址的列表,以便与您的池中的 VM 一起使用。 在某些情况下,可能需要控制公共 IP 地址列表,以确保它们不会意外更改。 例如,你可能正在使用外部服务(例如数据库)来限制对特定 IP 地址的访问。

先决条件

注释

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

公共 IP 地址要求

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

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

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

重要

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

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

以下示例演示如何通过使用公共 IP 地址的 Azure Batch 服务 REST API 创建池。

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"
      } ]
    }

后续步骤