创建没有公共 IP 地址的简化节点通信池

注释

这会替换以前没有公共 IP 地址的 Azure Batch 池预览版。 此新版本需要使用 简化的计算节点通信

重要

Azure Batch 中不含公共 IP 地址的池目前可用于 有限区域

创建 Azure Batch 池时,无需公共 IP 地址即可预配虚拟机(VM)配置池。 本文介绍如何在没有公共 IP 地址的情况下设置 Batch 池。

为何使用没有公共 IP 地址的池?

默认情况下,Azure Batch VM 配置池中的所有计算节点都分配有公共 IP 地址。 Batch 服务使用此地址来支持对 Internet 的出站访问,以及从 Internet 对计算节点的入站访问。

若要限制对这些节点的访问并减少这些节点从 Internet 的可发现性,可以预配池而不使用公共 IP 地址。

先决条件

重要

先决条件已从此前的预览版本更改。 在继续作之前,请确保查看每个项是否有更改。

  • 使用简化的计算节点通信。 有关详细信息,请参阅 使用简化的计算节点通信

  • Batch 客户端 API 必须使用Microsoft Entra 身份验证。 Azure Batch 对 Microsoft Entra ID 的支持记录在 使用 Active Directory 进行身份验证的 Batch 服务解决方案 中。

  • Azure 虚拟网络(VNet)中创建池,遵循这些要求和配置。 若要提前准备包含一个或多个子网的 VNet,可以使用 Azure 门户、Azure PowerShell、Azure Command-Line 接口(Azure CLI)或其他方法。

    • VNet 必须与用于创建池的 Batch 帐户位于同一订阅和区域中。

    • 为池指定的子网必须有足够的未分配 IP 地址以容纳指定用于池的 VM 数;即池的 targetDedicatedNodestargetLowPriorityNodes 属性之和。 如果子网没有足够的未分配 IP 地址,则池部分分配计算节点,并发生调整大小错误。

    • 如果计划使用专用终结点,并且虚拟网络启用了 专用终结点网络策略 ,请确保必须允许从 Batch 池的子网与托管专用终结点的子网建立 TCP/443 的入站连接。

  • 启用出站访问以管理 Batch 节点。 默认情况下,没有公共 IP 地址的池未启用外网访问。 选择以下选项之一以允许计算节点访问 Batch 节点管理服务(请参阅 “使用简化的计算节点通信”):

    • nodeManagement 专用终结点 与 Batch 帐户配合使用,该帐户提供从虚拟网络对 Batch 节点管理服务的专用访问权限。 此解决方案是首选方法。

    • 或者,提供自己的 Internet 出站访问支持(请参阅 Internet 出站访问)。

重要

对于具有 Batch 帐户的专用终结点,有两个子资源。 对于没有公共 IP 地址的 Batch 池,请使用 nodeManagement 专用终结点。 有关更多详细信息,请查看 将专用终结点与 Azure Batch 帐户配合使用 的文档

当前限制

  1. 没有公共 IP 地址的池必须使用虚拟机配置,而不是云服务配置。
  2. Batch 计算节点的自定义终结点配置不适用于没有公共 IP 地址的池。
  3. 由于没有公共 IP 地址,因此不能 将自己的指定公共 IP 地址 用于这种类型的池。

在 Azure 门户中创建没有公共 IP 地址的池

  1. 如果需要,请在虚拟网络中为 Batch 帐户创建 nodeManagement 专用终结点(请参阅 先决条件中的出站访问要求)。
  2. 在 Azure 门户中导航到 Batch 帐户。
  3. 在左侧的 “设置” 窗口中,选择“ ”。
  4. 在“ ”窗口中,选择“ 添加”。
  5. “添加池 ”窗口中,从 “图像类型 ”下拉列表中选择要使用的选项。
  6. 选择映像的正确 发布者/服务/SKU
  7. 指定剩余的必需设置,包括 节点大小目标专用节点目标现成节点
  8. 对于 节点通信模式,请在“可选设置”下 选择简化
  9. 选择要使用的虚拟网络和子网。 此虚拟网络必须与要创建的池位于同一位置。
  10. IP 地址预配类型中,选择 NoPublicIPAddresses

以下屏幕截图显示了为了创建无需公共 IP 地址的池, 需要被修改的元素。

在“添加池”屏幕中选择了 NoPublicIPAddresses 的屏幕截图。

使用 Batch REST API 创建没有公共 IP 地址的池

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

REST API URI

POST {batchURL}/pools?api-version=2022-10-01.16.0
client-request-id: 00000000-0000-0000-0000-000000000000

请求主体

"pool": {
     "id": "pool-npip",
     "vmSize": "standard_d2s_v3",
     "virtualMachineConfiguration": {
          "imageReference": {
               "publisher": "Canonical",
               "offer": "0001-com-ubuntu-server-jammy",
               "sku": "22_04-lts"
          },
          "nodeAgentSKUId": "batch.node.ubuntu 22.04"
     },
     "networkConfiguration": {
          "subnetId": "/subscriptions/<your_subscription_id>/resourceGroups/<your_resource_group>/providers/Microsoft.Network/virtualNetworks/<your_vnet_name>/subnets/<your_subnet_name>",
          "publicIPAddressConfiguration": {
               "provision": "NoPublicIPAddresses"
          }
     },
     "resizeTimeout": "PT15M",
     "targetDedicatedNodes": 2,
     "targetLowPriorityNodes": 0,
     "taskSlotsPerNode": 1,
     "taskSchedulingPolicy": {
          "nodeFillType": "spread"
     },
     "enableAutoScale": false,
     "enableInterNodeCommunication": false,
     "targetNodeCommunicationMode": "simplified"
}

使用 ARM 模板创建没有公共 IP 地址的池

可以使用此 Azure 快速入门模板 通过 Azure 资源管理器 (ARM) 模板创建没有公共 IP 地址的池。

模板将部署以下资源:

  • 配置了 IP 防火墙以阻止公共网络访问 Batch 节点管理终结点的 Azure Batch 帐户
  • 使用网络安全组阻止 Internet 出站访问的虚拟网络
  • 用于访问账户 Batch 节点管理端点的专用端点
  • 使用链接到虚拟网络的专用 DNS 区域实现专用终结点的 DNS 集成
  • 部署在虚拟网络中且无公共 IP 地址的 Batch 池

如果熟悉使用 ARM 模板,请选择“ 部署到 Azure ”按钮。 Azure 门户中会打开模板。

部署到 Azure

注释

如果专用终结点部署由于 groupId“nodeManagement”无效而失败,请检查该区域是否位于受支持的列表中,以便 进行简化的计算节点通信。 选择正确的区域,然后重试部署。

对 Internet 的出站访问

在没有公共 IP 地址的池中,除非正确配置网络设置,例如使用 虚拟网络 NAT,否则虚拟机将无法访问公共 Internet。 NAT 仅允许从虚拟网络中的虚拟机对 Internet 进行出站访问。 无法公开访问批处理创建的计算节点,因为它们没有关联的公共 IP 地址。

提供出站连接的另一种方法是使用用户定义的路由(UDR)。 此方法允许将流量路由到具有公共 Internet 访问权限的代理计算机,例如 Azure 防火墙

重要

没有为没有公共 IP 地址的简化节点通信池创建额外的网络资源(负载均衡器、网络安全组)。 由于池中的计算节点未绑定到任何负载均衡器,Azure 可以提供 默认出站访问。 但是,默认出站访问不适用于生产工作负荷,将于 2026 年 3 月 31 日停用(请参阅 官方公告)。 因此,如果工作负载确实需要互联网出站访问,或者池不使用专用端点访问 Batch 节点管理端点,则必须提供自己的解决方案才能启用互联网出站访问。

Troubleshooting

Batch 池中不可用的计算节点

如果计算节点在没有公共 IP 地址的 Batch 池中处于不可用状态,则第一个最重要的检查是验证对 Batch 节点管理服务的出站访问。 必须正确配置它,以便计算节点能够从虚拟网络连接到服务。

使用 nodeManagement 专用终结点

如果在虚拟网络中为 Batch 帐户创建了节点管理专用终结点:

  • 检查专用终结点是否在正确的虚拟网络中创建,处于预配成功状态,并且处于已批准状态。
  • 检查是否已为 Batch 帐户的节点管理终结点正确设置 DNS 配置:
    • 如果专用终结点是使用自动专用 DNS 区域集成创建的,请检查 DNS A 记录是否已在专用 DNS 区域中 privatelink.batch.chinacloudapi.cn正确配置,并且该区域已链接到虚拟网络。
    • 如果使用自己的 DNS 解决方案,请确保正确配置 Batch 节点管理终结点的 DNS 记录,并指向专用终结点 IP 地址。
  • 检查您帐户的 Batch 节点管理终结点 的 DNS 解析。 可以通过从虚拟网络中运行 nslookup <nodeManagementEndpoint> 来确认它,DNS 名称应解析为专用终结点 IP 地址。
  • 如果虚拟网络启用了 专用终结点网络策略 ,请检查 NSG 和 UDR,了解 Batch 池和专用终结点的子网。 必须允许从 Batch 池的子网使用 TCP/443 与托管专用终结点的子网建立入站连接。
  • 在 Batch 池的子网中,使用默认 HTTPS 端口(443)运行 TCP ping 到节点管理终结点。 此探测可以判断专用链接连接是否按预期工作。
# Windows
Test-TcpConnection -ComputeName <nodeManagementEndpoint> -Port 443
# Linux
nc -v <nodeManagementEndpoint> 443

如果 TCP ping 失败(例如超时),这通常表示专用链接连接存在问题,您可以使用此专用终结点资源提交 Azure 支持请求。 否则,可以像排查普通 Batch 池一样排查此节点不可用的问题,并可以通过您的 Batch 帐户提交支持请求。

使用自己的 Internet 出站解决方案

如果使用自己的 Internet 出站解决方案而不是专用终结点,请对节点管理终结点运行 TCP ping。 如果不起作用,请检查出站访问是否已正确配置,具体方法是遵循 简化计算节点通信的详细要求。

连接到计算节点

没有公共 IP 地址的情况下,Batch 池中的计算节点无法进行 Internet 入站访问。 若要访问计算节点进行调试,需要从虚拟网络内部进行连接:

  • 使用虚拟网络中的 jumpbox 主机,然后从该主机连接到您的计算节点。
  • 或者,请尝试使用其他远程连接解决方案,例如 Azure Bastion
    • 在启用了 基于 IP 的连接 的虚拟网络中创建 Bastion。
    • 使用 Bastion 通过其 IP 地址连接到计算节点。

可以按照指南 连接到计算节点 ,获取 Batch 池中目标计算节点的用户凭据和 IP 地址。

从以前的“无公共 IP 池”预览版迁移

对于使用以前预览版 Azure Batch No 公共 IP 池的现有池,只能迁移在 虚拟网络中创建的池。

  1. 在虚拟网络中创建 Batch 节点管理的专用终结点
  2. 将池的节点通信模式更新为简化
  3. 将池缩减为零个节点。
  4. 再次横向扩展池。 然后,池会自动迁移到新版本。

后续步骤