问题是这样的,有两个应用,这两个应用有相互调用关系,而且是双向调用,A会调用B,B也会调用A,且通过nginx对后台的两个tomcat进行负载均衡,结果在访问时就会不时的出现session丢失,F12查看route不停的改变,提示重新登录的错误!如果后台是单机的tomcat,则不会有上述问题。
经过不停的思考和尝试,一共思考出了两个解决方案,并且成功测试通过!
解决方案如下:
1、修改nginx负载均衡策略,由原来的sticky改为ip_hash;
2、负载均衡策略不动,还是使用sticky,只不过sticky要多些配置,如下:
upstream loadbalancer_01{
sticky name=route1;//目的是要保证两个route的name是不一样的
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
upstream loadbalancer_02{
sticky name=route2; //目的是要保证两个route的name是不一样的
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
原因分析:两个应用的负载均衡器的route的名字相同,默认都叫route,导致两个应用的route相互覆盖!