目录
1、本文承接《Nginx 下载 与 Windows 下访问集群 Tomat》
2、集群是为了给服务器负载均衡,减轻压力,但对于用户来说,不管访问的是哪台具体的服务器,内容应该是一样的才对,不可能在服务器A下的单,一刷新访问到服务器B时,订单就没有,这是不允许的。用户的Session不一致,这就是引出了“Session 共享”的问题。
3、解决 session 共享问题通常有如下3种方式:
web 服务器自己解决
1、仅在window下使用,采用web服务器解决(广播机制),注意可能会导致 tomcat 性能下降。
2、第一步是修改tomcat服务器conf目录下的server.xml文件,使其支持共享:将引擎标签下的 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>,注释去掉
3、第二步二是修改项目的配置文件 web.xml中添加一个节点:“<distributable/>”
4、修改好了两个Tomcat的server.xml文件以及两个项目的web.xml文件之后,重启两个Tomcat服务器,再次浏览器访问时,发现跳转不同的Tomcat下的应用时,Session的id值是一样的了,即Session共享了
upstream 中添加 ip_hash
1、保证一个 ip 地址永远的访问一台 web 服务器,这样也就不存在 session 共享问题了,这是在 linux 常用的方式
2、在 nginx 的配置文件 nginx.conf 中的 upstream 下添加 ip_hash;
将 session 的 id 放入redis中
可以将session的id放入redis中,单独参考《 Spring Session + Redis 实现 Session 共享,附带 Nginx 集群》