记一次Nginx负载均衡ip_hash会话失效问题
服务架构
2tomcat + Nginx(ip_hash)
问题现象
页面在加载的时候,提示会话超时,其他页面都正常。
问题分析
根据现场反馈过来的问题,第一时间问了项目架构,得知是ip_hash的策略,第一时间还楞了一下,ip_hash怎么会有会话失效的问题。后来远程到了现场环境上面,发现提示会话失效的页面,接口请求返回数据时间比较长。
查看了Nginx错误日志,发现果然是超时了。后面猜想是请求A服务超时了,Nginx把请求转到B服务上去了。
为了证实猜想,查看了两台tomcat的服务器日志。果然!在B服务器提示了会话失效!看来不能偷懒啊,还是得老老实实的把会话存储到redis里!ip_hash这个负载均衡的策略,看来是不能适用与生产。
知道问题所在,就比较好办的。
解决方案又两种:
第一种:修改Nginx的超时时间
第二种:会话的token存储到redis里