我有两台独立的Nginx机器.该域使用循环DNS并具有两个A记录,一个用于两个前端Nginx服务器中的每一个.
两个Nginx服务器都使用ip_hash指令和代理请求到相同的后端服务器.
转到第一个Nginx服务器的IP地址是否总是被路由到与发往另一个Nginx服务器的相同IP地址相同的后端服务器?
这可能有所帮助:What IP does nginx use for ip_hash sticky sessions?
最佳答案
Nginx服务器不知道彼此有自己的ip_hash表.因此,特定服务器将根据自己的ip_hash池将流量路由到后端.前端Nginx服务器之间的任何一致性都是由于偶然的机会.
现在在实践中,这可能不是一个问题,因为客户端的DNS在会话期间不太可能发生变化.结果,他们将访问相同的前端服务器并被路由到相同的后端服务器.
另一种方法是使用类似HAProxy的东西,它可以在许多指标上进行平衡,例如:作为URL参数.您的应用程序可以设置参数以确保客户端路由到同一后端.当然,首选使用分布式工具通过后端规范化数据是首选,但对于遗留应用程序而言,这可能具有挑战性.