场景:在项目集群部署的时候遇到的一个坑,Nginx+Tomcat集群后发现,登陆总是登陆不上,亦或者是登陆上了一次,下一次请求又回到了登陆页,造成根本无法正常操作。在查询原因后发现了问题所在。 第一次请求被nginx分配到了Tomcat1,这时Session存在了Tomcat1,第二次请求却被分配到了Tomcat2。Tomcat2并没有已登录的Session,因此跳回了登录页,如此循环。。因此就需要在多台server之间共享session。
session共享的方法有很多,有tomcat自带的session共享,ehcache的集群同步,memcached,12306用的gemfire(这个以后有机会在研究吧哈哈)等等,这里我用redis的两种形式来实现session共享。
第一种:Tomcat可以依赖redis的lib包来实现共享, 这是比较简单的。
Step1:将三个redis相关jar包放入tomcat7的lib中。
三个jar包由
Tomcat-redis-session-manager打包生成