HTTPS 请求始终转到 Azure Service Fabric VM 规模集中的同一节点

HTTPS request always goes to the same node in Azure Service Fabric VM Scale Set

我在 Azure Service Fabric 中有一项服务 运行,它使用 Azure 负载均衡器(具有 public IP)向全世界公开。

当我在 3 分钟内从一台机器发送 1000 个请求时,所有请求都被路由到同一个节点。我希望它们分布在我的 VM 规模集中的所有 5 个节点上。

我没有在我的负载平衡器中放置任何会话持久性设置。在下面 link 中,负载均衡器默认有 4 分钟的空闲超时。这会导致我所有的请求都转到同一个节点吗?

https://azure.microsoft.com/en-us/blog/new-configurable-idle-timeout-for-azure-load-balancer/

在 Azure LB 上,无论何时在客户端和服务之间建立连接,负载均衡器都会将该连接路由到同一个 server\service。空闲超时将告诉连接在考虑打开新连接之前必须保持空闲多长时间。新连接可能会将您重定向到另一个 server\service,如果有任何其他连接可用,它也可能连接到相同的连接。

因为您可能使用同一个连接来发送所有这些请求,所以负载均衡器知道它来自同一个客户端并针对它所连接的同一个服务。它使现有连接保持活动状态。

只有在有充分理由的情况下才建议减少此时间,因为创建新连接会增加通信延迟并可能影响网络性能。这可能是他们将最短时间限制为 4 分钟的原因。

load balancer distribution mode 使用 2 或 5 个元组来保持这些 'sticky' 连接。您可能会检查您的是否使用 5 元组(默认)。在 5 元组配置中,LB 还会在连接打开时考虑客户端端口。

如果只有一个客户端发出这些请求,您必须管理来自单个进程的多个连接,并且每个连接将使用不同的端口。

如果您使用多个客户端,这应该不是问题,但如果这些测试来自多个客户端,您必须确认它们是否没有重复使用相同的连接。

在 dot net 上,您可能需要调整 ServicePoint and ServicePointManager 类 上的配置。

您可能还想看看这个博客 post:how-to-fix-load-balancer-not-working-in-round-robin-fashion-for-your-cloud-service。它适用于云服务,但使用类似的方法。