排查 Service Fabric 托管群集中的 SNAT 端口耗尽问题
本文提供有关 Service Fabric 托管群集中源网络地址转换 (SNAT) 端口耗尽的详细信息及其故障排除方法。 若要了解有关 SNAT 端口的详细信息,请参阅出站连接的源网络地址转换。
有一些解决方案可以避免 Service Fabric 托管群集中的 SNAT 端口限制。 它们包括:
如果目标是 Azure 外部的外部终结点,则使用 Azure NAT 网关可为你提供 64k 出站 SNAT 端口(可供通过该网关发送流量的资源使用)。 Azure NAT 网关是一种高度可复原且可缩放的 Azure 服务,提供从虚拟网络到 Internet 的出站连接。 NAT 网关还提供了一个专用出站地址,可以不与任何人共享。 NAT 网关使用 SNAT 端口的唯一方法有助于解决常见的 SNAT 耗尽和连接问题。 如果服务启动到同一目标的重复 TCP 或 UDP 出站连接,则强烈建议使用 NAT 网关。 下面介绍如何将 Service Fabric 托管群集配置为使用 NAT 网关。
如果目标是支持服务终结点的 Azure 服务,则可通过使用服务终结点(所有节点类型都支持)来避免 SNAT 端口耗尽问题。 若要配置服务终结点,需要将以下内容添加到群集资源的 ARM 模板并进行部署:
ARM 模板:
"serviceEndpoints": [ { "service": "Microsoft.Storage", "locations":[ "chinaeast", "chinanorth"] }, { "service": "Microsoft.ServiceBus" } ]
通过自带负载均衡器,你可以定义自己的出站规则或附加多个出站公共 IP 地址以提供更多 SNAT 端口(辅助节点类型支持)。
对于较小规模的部署,可以考虑[将公共 IP 分配给节点] (../service-fabric/how-to-managed-cluster-networking#enable-public-ip.md)(辅助节点类型支持)。 如果将公共 IP 分配给节点,则公共 IP 提供的所有端口都可用于该节点。 与负载均衡器或 NAT 网关不同,这些端口只能访问与 IP 地址关联的单个节点。
设计应用程序以高效使用连接。 连接效率可以减少或消除已部署应用程序中的 SNAT 端口耗尽问题。
“Azure 的出站连接”文档的解决问题部分介绍了缓解 SNAT 端口耗尽问题的一般策略。 如果对本文中的任何观点存在疑问,请通过 Azure 支持联系 Azure 专家。 或者,提交 Azure 支持事件。 请转到 Azure 支持站点并选择 获取支持。