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>
< 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博客 ” ,链接:http://blog.itpub.net/27043155/viewspace-733713/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27043155/viewspace-733713/