这个模块通过session cookie的方式来获取session粘性。如果在cookie和url中并没有session,则这只是个简单的round-robin 负载均衡。
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不同步问题,但无法解决宕机后会话转移问题。
二. 下载模块nginx_upstream_jvm_route模块网站地址:http://code.google.com/p/nginx-upstream-jvm-route/
采用svn方式下载源
svn checkout http://nginx-upstream-jvm-route.googlecode.com/svn/trunk/ nginx-upstream-jvm-route-read-only
下载后 目录地址如下(pwd):
/work/tmp/nginx-upstream-jvm-route-read-only
三. 下载nginxwget http://nginx.org/download/nginx-1.5.3.tar.gz (编译过程中发生问题, 没有编译通过, 最后更换 nginx 1.29)
wget http://nginx.org/download/nginx-1.2.9.tar.gz
解压缩nginx
进入nginx目录
执行 patch -p0 < /work/tmp/nginx-upstream-jvm-route-read-only/jvm_route.patch
发现没有 patch命令. 因此运行: yum install patch 安装相关命令, 如下图
再次执行命令
patch -p0 < /work/tmp/nginx-upstream-jvm-route-read-only/jvm_route.patch
[[email protected] nginx]# patch -p0 < /work/tmp/nginx-upstream-jvm-route-read-only/jvm_route.patch
patching file src/http/ngx_http_upstream.c
Hunk #1 succeeded at 4462 (offset 620 lines).
Hunk #3 succeeded at 4594 (offset 620 lines).
Hunk #5 succeeded at 4664 (offset 620 lines).
patching file src/http/ngx_http_upstream.h
Hunk #1 succeeded at 92 (offset 7 lines).
四. 编译nginx./configure –add-module=/work/tmp/nginx-upstream-jvm-route-read-only
后发现缺少 相关 pcre程序, 然后yum install pcre成功后,还是找不到相关pcre程序, 最后源码安装 pcre(http://www.pcre.org/
安装中也遇到些问题,已经解决,见前一篇文章),
安装prce通过后.但是缺少gzip相关模块, 为了简单, 先临时关闭这个功能模块如下
./configure –add-module=/work/tmp/nginx-upstream-jvm-route-read-only –without-http_gzip_module
再次make, 成功
最后 make install 成功
最后到
[[email protected] nginx]# pwd
/usr/local/nginx
[[email protected] nginx]# ls
conf html logs sbin
[[email protected] nginx]#
查看nginx的安装情况, 发现完全安装完毕