多个 Nginx 服务器是否使用 ip_hash 指令将相同的 IP 地址负载平衡到相同的后端?

Jus*_*zer 5 linux nginx proxy load-balancing hash

我有两台独立的 Nginx 机器。该域使用循环 DNS 并具有两个 A 记录,每个 A 记录对应两个前端 Nginx 服务器。

两个 Nginx 服务器都使用ip_hash指令并代理请求到相同的后端服务器。

前往第一个 Nginx 服务器的 IP 地址是否始终会路由至与前往另一个 Nginx 服务器的相同 IP 地址相同的后端服务器?

这可能会有所帮助:What IP does nginx use for ip_hash StickySessions?

jef*_*aid 2

Nginx 服务器不知道彼此有自己的 ip_hash 表。所以特定的服务器会根据自己的ip_hash池将流量路由到后端。前端 Nginx 服务器之间的任何一致性都纯属偶然。

现在在实践中,这可能不是什么问题,因为客户端的 DNS 在会话期间不太可能发生更改。结果,它们将到达相同的前端服务器并被路由到相同的后端服务器。

另一种方法是使用 HAProxy 之类的东西,它可以平衡许多指标,例如作为 URL 参数。您的应用程序可以设置一个参数以确保客户端被路由到同一后端。当然,使用分布式工具在后端标准化数据是首选,但这对于遗留应用程序来说可能具有挑战性。

  • 但如果 Nginx 总是使用相同的方法来散列没有随机变量的 IP 地址,那么它们就会做同样的事情。您是否查看过 Nginx 源代码来确定这一点? (2认同)