你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用简化的计算节点通信

Azure Batch 池包含一个或多个计算节点,这些节点以 Batch 任务的形式执行用户指定的工作负荷。 若要启用 Batch 功能和 Batch 池基础结构管理,计算节点必须与 Azure Batch 服务通信。

Batch 支持两种类型的通信模式:

  • 经典:Batch 服务启动与计算节点的通信。
  • 简化:计算节点启动与 Batch 服务的通信。

本文介绍 简化的 通信模式和关联的网络配置要求。

警告

经典计算节点通信模式将于 2026 年 3 月 31 日停用,并替换为本文档中所述的简化通信模式。

Important

在配置简化模式之前了解两个独立的设置:

  • 池公共 IP 地址 控制计算节点本身的网络(是指 VM 是否具有用于外部互联网访问的公共 IP)。
  • 帐户公用网络访问publicNetworkAccess) 控制 Batch 服务终结点(包括 节点管理终结点)是否接受来自公共 Internet 的连接。

这些设置是独立的。 池的计算节点可以拥有公共 IP,同时 Batch 帐户的公共网络访问已被禁用。 在简化模式下,计算节点启动到 Batch 节点管理终结点的出站连接。 如果 Batch 帐户 publicNetworkAccess 已设置为 “已禁用”,则节点管理终结点会拒绝公共连接,即使池具有公共 IP,NSG 也允许出站流量。 在这种情况下, 必须 创建 nodeManagement 专用终结点 ,以便计算节点可以通过专用连接访问节点管理服务。

小窍门

如果池使用私有终结点,而没有使用公共 IP 地址,并且没有 Internet 出站访问,则本文档中所述的 NSG 和防火墙规则不适用于您的配置。

支持的区域

Azure Batch 中的简化计算节点通信目前适用于以下区域:

  • 公共:除了印度西部以外,Batch 存在的所有公共区域。
  • 政府:USGov 亚利桑那、USGov 弗吉尼亚州、USGov 得克萨斯州。
  • 中国:存在 Batch 的所有中国区域,中国北部 1 和中国东部 1 除外。

经典模式和简化模式之间的差异

简化的计算节点通信模式简化了代表用户管理 Batch 池基础结构的方式。 此通信模式减少了基线作中所需的入站和出站网络连接的复杂性和范围。

在虚拟网络中创建池时,经典通信模式下的 Batch 池需要在网络安全组 (NSG)、用户定义的路由 (UDR) 和防火墙中使用以下网络规则:

  • 入境:

    • 使用 TCP 的目标端口 2987629877,来源 BatchNodeManagement.<region>
  • 出境:

    • 使用 TCP 的目标端口 443,目的地 Storage.<region>
    • 使用 TCP 的目标端口 443,目的地 BatchNodeManagement.<region>,适用于需要与 Batch 服务反向通信的某些工作负载(例如作业管理器任务)

简化通信模式下的 Batch 池只需要对 Batch 帐户的节点管理终结点进行出站访问(请参阅 Batch 帐户公共终结点)。 当 Batch 帐户 publicNetworkAccess 设置为 “已启用”(默认值)时,需要在 NSG、UDR 和防火墙中设置以下网络规则:

  • 入境:

    • None
  • 出境:

    • 使用 ANY 的目标端口 443,目的地 BatchNodeManagement.<region>

当 Batch 帐户 publicNetworkAccess 设置为 已禁用时,仅依靠先前的出站规则 BatchNodeManagement.<region> 是不充分的,节点管理终结点将拒绝公共连接。 在这种情况下,你必须:

  1. 在池的虚拟网络中创建 nodeManagement 专用终结点
  2. 配置 DNS,使节点管理终结点解析为专用终结点 IP 地址。
  3. 确保网络路径(NSG,UDR)允许从池子网到专用终结点子网的 TCP/443。

有关详细信息,请参阅 将专用终结点与 Batch 帐户配合使用

Important

如果帐户公用网络访问已禁用且未配置 nodeManagement 专用终结点,则简化通信模式下的计算节点无法连接到节点管理服务,即使池具有公共 IP,NSG 允许出站流量。BatchNodeManagement.<region> 这会导致节点进入 不可用 状态。 若要解析,请创建 nodeManagement 专用终结点并验证 DNS 解析。 有关详细信息,请参阅 故障排除部分

可以使用列出出站网络依赖项终结点 API 来发现 Batch 帐户的出站要求。 此 API 根据 Batch 帐户池通信模式报告基本依赖项集。 特定于用户的工作负载可能需要额外的规则,例如开放发送到其他 Azure 资源(如适用于应用程序包的 Azure 存储、Azure 容器注册表等)的流量或终结点(如用于虚拟文件系统装载功能的 Microsoft 包存储库)。

简化模式的优点

利用简化模式的 Azure Batch 用户受益于简化网络连接和规则。 简化的计算节点通信通过消除从 Internet 打开入站通信端口的要求,帮助降低安全风险。 基线操作只需要对已知服务标记的单个出站规则。

简化模式还提供了相较于经典通信模式更精细的粒度的数据外泄控制,因为不再需要与Storage.<region>进行出站通信。 如果工作流需要,可以显式锁定发往 Azure 存储的出站通信。 例如,可以将出站通信规则的范围限定为 Azure 存储,以便为资源文件或输出文件启用 AppPackage 存储帐户或其他存储帐户。

即使工作负荷当前不受更改的影响(如以下部分所述),建议迁移到简化模式。 Batch 服务的未来改进可能仅适用于简化的计算节点通信。

经典通信模式和简化通信模式之间的潜在影响

在许多情况下,简化的通信模式不会直接影响 Batch 工作负荷。 但是,简化的计算节点通信对以下情况产生了影响:

  • 在创建 Batch 池的过程中指定虚拟网络,以及执行以下一项或全部两项操作的用户:
    • 显式禁用与简化的计算节点通信不兼容的出站网络流量规则。
    • 使用与简化的计算节点通信不兼容的 UDR 和防火墙规则。
  • 启用计算节点上的软件防火墙,并在软件防火墙规则中显式禁用出站流量的用户(当这些规则与简化的计算节点通信不兼容时)。

如果上述任一情况适用于你,请遵循下一部分中概述的步骤,确保 Batch 工作负载仍可在简化模式下运行。 强烈建议先测试和验证开发和测试环境中的所有更改,然后再将更改推送到生产环境。

简化模式所需的网络配置更改

需要执行以下步骤才能迁移到新的通信模式:

  1. 检查 Batch 帐户的公共网络访问设置。 如果 publicNetworkAccess 设置为 “已禁用”,则必须在池的虚拟网络中创建 nodeManagement 专用终结点 ,并在继续操作之前配置 DNS。 如果没有此项,则简化模式下的计算节点无法连接到 Batch 服务,而不管 NSG 规则如何。 有关详细信息,请参阅 将专用终结点与 Azure Batch 帐户配合使用
  2. 确保适用于 Batch 池(NSG、UDR、防火墙等)的网络配置要包含两种模式的结合,即经典模式和简化模式的组合网络规则。 这些规则至少为:
    • 入境:
      • 使用 TCP 的目标端口 2987629877,来源 BatchNodeManagement.<region>
    • 出境:
      • 使用 TCP 的目标端口 443,目的地 Storage.<region>
      • 使用 ANY 的目标端口 443,目的地 BatchNodeManagement.<region>
  3. 如果工作流需要任何其他入站或出站方案,则需要确保规则反映这些要求。
  4. 使用以下选项之一更新工作负载以使用新的通信模式。
    • 创建新池并将 targetNodeCommunicationMode 设置为 简化,验证新池是否正常工作。 将工作负荷迁移到新池,并删除任何以前的池。
    • 更新现有池 targetNodeCommunicationMode 属性以 简化 ,然后将所有现有池的大小调整为零节点并缩减。
  5. 使用 获取池 API、 列表池 API 或 Azure 门户确认 currentNodeCommunicationMode 已设置为 简化的所需通信模式。
  6. 将所有适用的网络配置修改为简化的通信规则(请至少注意上述所需的任何额外规则):
    • 入境:
      • None
    • 出境:
      • 使用 ANY 的目标端口 443,目的地 BatchNodeManagement.<region>

如果遵循以下步骤,但稍后想要切换回 经典 计算节点通信,则需要执行以下作:

  1. 还原仅在简化计算节点通信模式下运行的任何网络配置。
  2. 创建新的池或更新现有池时,将targetNodeCommunicationMode属性设置为经典
  3. 将工作负荷迁移到这些池,或调整现有池的大小并缩减(请参阅上面的步骤 3)。
  4. 请参考上方的步骤 4,确认您的池正在 经典 通信模式下运行。
  5. (可选)还原网络配置。

在 Batch 池上指定通信模式

通过 Batch 池上的 targetNodeCommunicationMode 属性,可以指示 Batch 服务在 Batch 服务和计算节点之间要使用的通信模式的首选项。 以下是此属性的允许选项:

  • 经典:使用经典计算节点通信创建池。
  • 简化:使用简化的计算节点通信创建池。
  • 默认值:允许 Batch 服务选择适当的计算节点通信模式。 对于没有虚拟网络的池,可以在经典模式或简化模式下创建池。 对于具有虚拟网络的池,池始终默认为经典池,直到 2024 年 9 月 30 日。 有关详细信息,请参阅经典计算节点通信模式 迁移指南

小窍门

指定目标节点通信模式表示 Batch 服务的首选项,但不能保证它将被遵守。 池上的某些配置可能会阻止 Batch 服务遵循指定的目标节点通信模式,例如与没有公共 IP 地址、虚拟网络和池配置类型的交互。

下面是如何使用简化的计算节点通信创建 Batch 池的示例。

Azure 门户

首先,登录到 Azure 门户。 然后,导航到 Batch 帐户的 “池 ”边栏选项卡,然后选择“ 添加 ”按钮。 在 “可选设置”下,可以选择 “简化 ”作为 节点通信模式 下拉选项,如下所示:

显示使用简化模式创建池的屏幕截图。

若要将现有池更新为简化的通信模式,请导航到 Batch 帐户的 “池 ”边栏选项卡,然后选择要更新的池。 在左侧导航上,选择 “节点通信模式”。 可以选择新的目标节点通信模式,如下所示。 选择适当的通信模式后,选择“ 保存 ”按钮进行更新。 首先,需要将池缩减到零个节点,然后回退以使更改生效(如果条件允许)。

显示将资源池更新为简化模式的屏幕截图。

若要显示池的当前节点通信模式,请导航到 Batch 帐户的 “池 ”边栏选项卡,然后选择要查看的池。 选择左侧导航上的 “属性 ”,池节点通信模式将显示在 “常规 ”部分下。

显示简化模式下池的属性的屏幕截图。

REST API

此示例演示如何使用 Batch 服务 REST API 创建具有简化计算节点通信的池。

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

请求主体

"pool": {
     "id": "pool-simplified",
     "vmSize": "standard_d2s_v3",
     "virtualMachineConfiguration": {
          "imageReference": {
               "publisher": "Canonical",
               "offer": "0001-com-ubuntu-server-jammy",
               "sku": "22_04-lts"
          },
          "nodeAgentSKUId": "batch.node.ubuntu 22.04"
     },
     "resizeTimeout": "PT15M",
     "targetDedicatedNodes": 2,
     "targetLowPriorityNodes": 0,
     "taskSlotsPerNode": 1,
     "taskSchedulingPolicy": {
          "nodeFillType": "spread"
     },
     "enableAutoScale": false,
     "enableInterNodeCommunication": false,
     "targetNodeCommunicationMode": "simplified"
}

局限性

以下是简化通信模式的已知限制:

  • 对没有公共 IP 地址的先前创建的池的迁移支持有限。 只有在 虚拟网络中创建这些池后才能迁移,否则它们不会使用简化的计算节点通信,即使在池上指定也是如此。
  • 简化的计算节点通信不支持云服务配置池,并且已 弃用。 为这些类型的池指定通信模式不会生效,并且始终会导致经典通信模式。 建议对 Batch 池使用虚拟机配置。

后续步骤