首页 > 其他 > 详细

Nginx+Tomcat+Memcached实现tomcat集群和session共享

时间:2014-03-04 01:45:14      阅读:477      评论:0      收藏:0      [点我收藏+]

一、Nginx安装

  详见前文:http://www.cnblogs.com/yixiwenwen/p/3574097.html

二、memcached安装和启动

  详见前文:http://www.cnblogs.com/yixiwenwen/p/3574137.html

 

  

三、配置Nginx实现Tomcat的负载均衡和利用memcached实现session共享

1. 修改nginx的配置文件nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
user  nobody;
worker_processes  4;
error_log  logs/error.log;
events {
    worker_connections  1024;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip  on;
    upstream  www.yixi.com   {
              server   192.168.137.46:100;
              server   192.168.137.46:101;<br>        server  192.168.137.46:102;<br>        
    }
    server {
        listen       80;
        server_name  www.yixi.com;
        charset utf-8;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass        http://www.yixi.com;
            proxy_set_header  X-Real-IP  $remote_addr;
            client_max_body_size  100m;
        }
 
 
        location ~ ^/(WEB-INF)/ {
            deny all;
        }
 
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
 
    }
}

2. Tomcat配置

下载并解压三个tomcat7;

下载相应的jar包到所有的tomcat的lib目录下:

couchbase-client-1.2.2.jar

javolution-5.4.3.1.jar

memcached-session-manager-1.6.4.jar

memcached-session-manager-tc7-1.6.4.jar

msm-javolution-serializer-1.6.4.jar

msm-kryo-serializer-1.6.4.jar

msm-xstream-serializer-1.6.4.jar

spymemcached-2.10.2.jar

 

下面修改Tomcat配置文件,让Tomcat结合memcached实现session共享
[root@localhost lib]# vi /usr/local/tomcat/conf/context.xml
在配置文件中的<context></context>标签里面加入如下内容:

1
2
3
4
5
6
7
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:localhost:11211"
    requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
    sessionBackupAsync="false"
    sessionBackupTimeout="100"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
    copyCollectionsForSerialization="false" />

为了测试在tomcat默认的webroot下的index.jsp中加入这些代码:

1
2
3
4
5
6
7
8
SessionID:<%=session.getId()%>
<BR>
SessionIP:<%=request.getServerName()%>
<BR>
SessionPort:<%=request.getServerPort()%>
<%
out.println("This is Tomcat Server 111111!");
%>

 

(备注:当要同时启动多个tomcat时需要修改一些配置

  a.修改/etc目录下的profile文件:  

export CATALINA_HOME_test_1=/usr/local/tomcat_test/apache-tomcat-7-1
export CATALINA_HOME_test_2=/usr/local/tomcat_test/apache-tomcat-7-2
export CATALINA_HOME_test_3=/usr/local/tomcat_test/apache-tomcat-7-3

  b. 修改bin下的startup.shshutdown.sh

  添加 export CATALINA_HOME=$CATALINA_2_HOME  利用profile中第二组设置

4.测试结果:

分别启动nginx memcached tomcat 

将host的文件中映射www.yixi.com到自己的ip;

在浏览器中访问www.yixi.com

bubuko.com,布布扣

访问的的是tomcat3 此时sessionID是:598EA38832CA14F8F14AC3EF0276AD3D-n1 

刷新几次发现访问的还是tomcat3,

为了测试 先杀死tomcat3的进程!

bubuko.com,布布扣

 

再刷新...

bubuko.com,布布扣

发现当tomcat3挂掉之后 请求就到了tomcat1 并且我们希望的sessionId还是598EA38832CA14F8F14AC3EF0276AD3D-n1 

再把tomcat1挂掉试试:

测试结果:

bubuko.com,布布扣

只剩下tomcat2还能用 而且sessionId是共享的。

这样整个配置和测试就完成了

 

 

附件:

tomcat部分:http://download.csdn.net/detail/yixiwenwen/6986845

nginx.conf :http://download.csdn.net/detail/yixiwenwen/6986719

Nginx+Tomcat+Memcached实现tomcat集群和session共享,布布扣,bubuko.com

Nginx+Tomcat+Memcached实现tomcat集群和session共享

原文:http://www.cnblogs.com/yixiwenwen/p/3578450.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!