为了获取更好的性能,我们常常需要将tomcat进行集群部署。下文通过nginx转发实现tomcat集群,并通过nginx-upstream-jvm-route插件保证session的粘滞。

  应用场景环境:

  server1 服务器上安装了 nginx + tomcat01

  server2 服务器上只安装了 tomcat02         

  server1 IP 地址: 192.168.1.88

  server2 IP 地址: 192.168.1.89

 

  安装步骤:

  1)在server1 上安装配置 nginx + nginx_upstream_jvm_route

  shell $> wget -c http://sysoev.ru/nginx/nginx-*.tar.gz

  shell $> svn checkout http://nginx-upstream-jvm-route.googlecode.com/svn/trunk/ nginx-upstream-jvm-route-read-only (googlecode已墙,移步https://github.com/nulab/nginx-upstream-jvm-route)

  shell $> tar zxvf nginx-*

  shell $> cd nginx-*

  shell $> patch -p0 < ../nginx-upstream-jvm-route-read-only/jvm_route.patch

  shell $> useradd www

  shell $> ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx-upstream-jvm-route-read-only

  shell $> make

  shell $> make install

 

  2)分别在两台机器上安装 tomcat和java

  设置tomcat的server.xml,在两台服务器的tomcat的配置文件中分别找到:

  <Engine name="Catalina" defaultHost="localhost" >

  分别修改为:

  Tomcat01:

  <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

  Tomcat02:

  <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

  分别启动两个tomcat

 

  3)设置nginx

  shell $> cd /usr/local/nginx/conf

  shell $> mv nginx.conf nginx.bak

  shell $> vi nginx.conf

  配置示例:

  4)测试

  运行 nginx -t 测试配置的正确性,

  可将服务器注释一个,实现服务的热部署,

  server 192.168.2.88:8080 srun_id=jvm1;

  server 192.168.2.89:8080 srun_id=jvm2;

  运行 nginx -s reload 实现热部署。


  更新:

    可以用tengine替换nginx使用。

    网址:http://tengine.taobao.org/

    回话保持:http://tengine.taobao.org/document_cn/http_upstream_session_sticky_cn.html