排查 Service Fabric 托管群集中的 SNAT 端口耗尽问题

本文提供有关 Service Fabric 托管群集中源网络地址转换 (SNAT) 端口耗尽的详细信息及其故障排除方法。 若要了解有关 SNAT 端口的详细信息,请参阅出站连接的源网络地址转换

如何排查源网络地址转换 (SNAT) 端口耗尽问题

有一些解决方案可以避免 Service Fabric 托管群集中的 SNAT 端口限制。 它们包括:

  1. 如果目标是 Azure 外部的外部终结点,则使用 Azure NAT 网关可为你提供 64k 出站 SNAT 端口(可供通过该网关发送流量的资源使用)。 Azure NAT 网关是一种高度可复原且可缩放的 Azure 服务,提供从虚拟网络到 Internet 的出站连接。 NAT 网关还提供了一个专用出站地址,可以不与任何人共享。 NAT 网关使用 SNAT 端口的唯一方法有助于解决常见的 SNAT 耗尽和连接问题。 如果服务启动到同一目标的重复 TCP 或 UDP 出站连接,则强烈建议使用 NAT 网关。 下面介绍如何将 Service Fabric 托管群集配置为使用 NAT 网关

  2. 如果目标是支持服务终结点的 Azure 服务,则可通过使用服务终结点(所有节点类型都支持)来避免 SNAT 端口耗尽问题。 若要配置服务终结点,需要将以下内容添加到群集资源的 ARM 模板并进行部署:

    ARM 模板:

     "serviceEndpoints": [ 
       {
         "service": "Microsoft.Storage",
         "locations":[ "chinaeast", "chinanorth"] 
       },
       {
         "service": "Microsoft.ServiceBus"
       }
     ]
    
  3. 通过自带负载均衡器,你可以定义自己的出站规则或附加多个出站公共 IP 地址以提供更多 SNAT 端口(辅助节点类型支持)。

  4. 对于较小规模的部署,可以考虑[将公共 IP 分配给节点] (../service-fabric/how-to-managed-cluster-networking#enable-public-ip.md)(辅助节点类型支持)。 如果将公共 IP 分配给节点,则公共 IP 提供的所有端口都可用于该节点。 与负载均衡器或 NAT 网关不同,这些端口只能访问与 IP 地址关联的单个节点。

  5. 设计应用程序以高效使用连接。 连接效率可以减少或消除已部署应用程序中的 SNAT 端口耗尽问题。

“Azure 的出站连接”文档的解决问题部分介绍了缓解 SNAT 端口耗尽问题的一般策略。 如果对本文中的任何观点存在疑问,请通过 Azure 支持联系 Azure 专家。 或者,提交 Azure 支持事件。 请转到 Azure 支持站点并选择 获取支持