之前分别介绍了Tomcat通过memcached session manager(MSM)方式和自带的CLuster方式实现session共享方案.今天这里说下Tomcat通过Nginx扩展插件nginx-upstream-jvm-route实现session同步,用来实现基于Cookie的Session Sticky的功能。
jvm_route的工作原理
1) 一开始请求过来,没有带session信息,jvm_route就根据round robin的方法,发到一台tomcat上面。
2) tomcat添加上session 信息,并返回给客户。
3) 用户再此请求,jvm_route看到session中有后端服务器的名称,它就把请求转到对应的服务器上。
暂时jvm_route模块还不支持默认fair的模式。jvm_route的工作模式和fair是冲突的。对于某个特定用户,当一直为他服务的tomcat宕机后,默认情况下它会重试max_fails的次数,如果还是失败,就重新启用round robin的方式,而这种情况下就会导致用户的session丢失。
总的说来,jvm_route是通过session_cookie这种方式来实现session粘性,将特定会话附属到特定tomcat上,从而解决session不同步问题,但无法解决宕机后会话转移问题。从根本上来说:jvm_route不是真正session共享,而是session分发固定,其实没有真正解决session共享问题!!生产环境,强烈推荐通过MSM方式实现session共享!
jvm_route插件实现Tomcat集群session同步的操作记录:
本案例所用到的软件下载地址:https://pan.baidu.com/s/1ZWEU15GhJavBqdCXWsYbzA
提取密码:nqr9
下载到服务器本地/usr/local/src目录下.
1) Nginx部署和配置
原文地址:https://www.cnblogs.com/kevingrace/p/9541551.html