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

我有两个单独的Nginx机器。 该域使用循环法DNS,并且有两个Alogging,两个前端Nginx服务器各有一个logging。

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

到第一个Nginx服务器的IP地址是否总会被路由到与其他Nginx服务器的IP地址相同的后端服务器?

这可能有帮助: nginx使用ip_hash粘性会话的IP是什么?

Nginx服务器不知道对方有自己的ip_hash表。 因此,特定的服务器会根据自己的ip_hash池将stream量路由到后端。 前端Nginx服务器之间的任何一致性都是偶然的。

现在在实践中,这可能不是什么问题,因为客户的DNS在会话期间不太可能改变。 因此,他们将碰到相同的前端服务器,并被路由到相同的后端服务器。

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

根据文件:

散列的关键是客户端的C类networking地址或整个IPv6地址。

所以,从理论上讲,这应该起作用。

另一个可能出现的问题是当你的一个后端失败。 Nginx并没有对接下来的客户端点击做出任何承诺。

但是,是的,HAProxy ftw。