我有一个运行在Azure Service Fabric中的服务,该服务使用Azure Load Balancer(具有公共IP)向世界公开。
当我在3分钟内从一台计算机发送1000个请求时,所有请求都被路由到同一节点。我希望它们可以分布在我的VM规模集中的所有5个节点上。
我没有在负载均衡器中添加任何会话持久性设置。在下面的链接中,负载均衡器默认情况下有4分钟的空闲超时。这会导致我所有的请求都转到同一个节点吗?
https://azure.microsoft.com/en-us/blog/new-configurable-idle-timeout-for-azure-load-balancer/
答案 0 :(得分:3)
在Azure LB上,每当在客户端和服务之间建立连接时,负载平衡器都会将该连接路由到同一服务器\服务。空闲超时将告知连接在考虑打开新连接之前必须保持空闲状态的时间。新的连接可能会将您重定向到另一个服务器\服务,并且如果有其他可用的服务,它也可能会连接到该服务器/服务。
由于您可能使用相同的连接来发送所有这些请求,因此负载平衡器了解到它来自同一客户端,并针对与其连接的同一服务。它使现有连接保持活动状态。
仅在有充分理由的情况下才建议减少此时间,因为创建新连接会增加通信延迟,并可能影响网络性能。这可能是他们将最短时间限制为4分钟的原因。
load balancer distribution mode使用2个或5个元组来保持这些“粘性”连接。您可能会检查自己是否正在使用5元组(默认值)。在五元组配置中,当连接打开时,LB也将考虑客户端端口。
如果只有一个客户端发出这些请求,则必须从一个进程管理多个连接,并且每个连接将使用不同的端口。
如果您使用多个客户端,这应该不成问题,但是,如果这些测试来自多个客户端,则必须确认它们是否不在重用同一连接。
在点网上,您可能需要调整ServicePoint和ServicePointManager类的配置。
您可能还想看看这篇博客文章:how-to-fix-load-balancer-not-working-in-round-robin-fashion-for-your-cloud-service。它用于云服务,但使用类似的方法。