ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Nginx和Tomcat的session处理

Nginx和Tomcat的session处理

原创 Linux操作系统 作者:nginx_web 时间:2012-06-25 13:34:57 0 删除 编辑

Nginx和Tomcat的session处理分为两步:

 

第一步,解决Nginx和Tomcat的负载均衡;

第二步,解决Tomcat集群和Memcached存储会话。

 

我们的这个案例是这样的在IP为192.168.3.139这台机器上安装了Tomcat1和Memcached1,而在IP为192.168.3.140这个台机器上安装了Tomcat2和Memcached2,对于Tomcat1和Memcached1、Tomcat2和Memcached2只是一个叫法而已,它们是完全一样的。在配置时要实现以下功能,参考了如下的官方文档:

 

http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration

 

看下面的图:

  

< Tomcat1>  < Tomcat2>

           .  \ /   .
.   X    .
.  / \   .

< Memcached1>  < Memcached2>

 

    在正常情况下,换句话说就是Tomcat1和Memcached1、Tomcat2和Memcached2都正常工作的时候,Tomcat1 会将session ID存储在Memcached2中,同理Tomcat2 会将session ID存储在Memcached1中,但是如果其中的一个Memcached出现了问题,与其对应的Tomcat就会将session ID存储在另一个Memcached中。为什么这样做呢?如果运行在同一台机器上Tomcat和Memcached同时倒掉(这种情况多数是系统崩溃)时,用户的会话不会丢失。

 

    这样的结构实现了只要有一个Tomcat、一个Memcached不失效就可以正常工作。

 

第一步,解决Nginx和Tomcat的负载均衡

 

    这一步比较简单,在Nginx的配置文件中添加如下内容:

   

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

 

   upstream  tomcat   {

              server   192.168.3.139:8080;

              server   192.168.3.140:8080;

    }

 

   server {

        listen       80;

        server_name  localhost;

     

 

 location  / {

            root   html;

            index  index.html index.htm;

            proxy_pass        http://tomcat;

            proxy_set_header  X-Real-IP  $remote_addr;

            client_max_body_size  80m;

        }

……

}

 

……

}

 

 

 

然后再重新启动Nginx就可以了。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27043155/viewspace-733713/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-06

  • 博文量
    52
  • 访问量
    444537