Nginx 下 安装nginx_upstream_jvm_route模块

一. nginx_upstream_jvm_route模块功能

这个模块通过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

三. 下载nginx

wget 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

wps_clip_image-11017

进入nginx目录

执行 patch -p0 < /work/tmp/nginx-upstream-jvm-route-read-only/jvm_route.patch

发现没有 patch命令. 因此运行: yum install patch 安装相关命令, 如下图

wps_clip_image-7931

再次执行命令

patch -p0 < /work/tmp/nginx-upstream-jvm-route-read-only/jvm_route.patch

wps_clip_image-7335

[root@iig 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相关模块, 为了简单, 先临时关闭这个功能模块如下

wps_clip_image-22025

./configure  --add-module=/work/tmp/nginx-upstream-jvm-route-read-only --without-http_gzip_module

再次make, 成功

最后 make install 成功

最后到

[root@n2 nginx]# pwd

/usr/local/nginx

[root@n2 nginx]# ls

conf  html  logs  sbin

[root@n2 nginx]#

查看nginx的安装情况, 发现完全安装完毕

发表评论