我想知道nginx在以下情况下如何负载平衡流量:
客户端---〉Nginx ---〉一组服务器
假设客户端是一个.NET应用程序。.NET的HTTPClient
在默认情况下永远保持TCP连接(docs)(除非大约一分钟没有流量,否则它会被丢弃)。
然后,假设客户端相当频繁地向nginx负载均衡器发送请求(假设每10秒一次),它将一直使用相同的连接。
nginx是如何对流量进行负载均衡的?如果客户端与nginx保持相同的TCP连接,它是否会这样做?或者它只是为该客户端分配一个目标服务器,由于它是相同的TCP连接,它会将所有流量从该客户端引导到同一个服务器?
1条答案
按热度按时间uz75evzq1#
假设您使用HTTP负载平衡-基于文档NGINX在每个请求的基础上执行负载平衡(如预期),它实际上如何平衡取决于所选的方法。因此,例如,如果您使用IP哈希-那么:
请求发送到的服务器是根据客户端IP地址确定的。在这种情况下,IPv4地址的前三个八位字节或整个IPv6地址都用于计算哈希值。该方法确保来自同一地址的请求到达同一服务器,除非该地址不可用。
所以来自同一服务器的所有请求都会被路由到同一个后端服务器,即使使用了多个
HttpClients
。