文档章节

nginx+tomcat+msm集群共享session

chaun
 chaun
发布于 2015/08/18 09:39
字数 547
阅读 58
收藏 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

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;        
              server  192.168.137.46:102;        
    }
    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>标签里面加入如下内容:

<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中加入这些代码:

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.sh和shutdown.sh

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

 )

4.测试结果:

分别启动nginx memcached tomcat 

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

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

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

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

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

再刷新...


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

再把tomcat1挂掉试试:

测试结果:

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

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


附件:

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

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

参考:

https://github.com/magro 

https://github.com/magro/memcached-session-manager/tree/memcached-session-manager-project-1.8.3 

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


© 著作权归作者所有

共有 人打赏支持
chaun
粉丝 88
博文 270
码字总数 96237
作品 0
深圳
高级程序员
Nginx--Session共享问题

在Nginx做反向代理时,面对集群,如何保证Session的一致性。 第一种是以负载均衡服务器本身提供的session共享策略,每种服务期的配置是不一样的并且nginx本身是没有的。 第二种是利用web容器...

btwangzhi
2017/11/26
0
0
集群下的session共享总结及问题

最近公司需要实现websphere集群的session共享,websphere集群本身支持共享,但是添加、删除节点还是需要重启服务才行(如果不是,请指正)。最近一直在骚扰@红薯 ,希望了解OSC的实现,现在也...

人头马没面
2012/12/08
9K
14
bboss 会话共享框架 4.0.8 发布

bboss 会话共享4.0.8发布 bboss 会话共享功能特点: 作 用:为应用提供统一会话管理功能,避免集群部署场景下负载切换session丢失问题; 跨域跨应用共享会话并实现SSO功能;解决了会话共享五...

bboss
2015/08/02
3.2K
16
bboss session 共享框架 v4.0.9 发布

bboss 会话共享4.0.9发布,4.0.9增加了以下特性: 升级mongodb客户端驱动到mongo-java-driver-3.0.3 支持mongodb最新稳定版本3.0.6(终于可以使用最新的高性能、可伸缩的NoSQL数据存储引擎W...

bboss
2015/09/05
1K
16
使用nginx+tomcat做集群时,如何同步shiro的session,保证可以完成正常的权限认证

各位好: 请教个问题,我的项目中使用了shiro做权限控制,在单机的情况下没问题,但是使用nginx+tomcat 做集群时,集群使用redis做了tomcat的session共享,验证的时候回出现问题,多次请求时...

刘朕
2017/03/01
787
5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windbg学习记录

我开始熟练使用windbg是从帮助手册开始的,也就是.hh命令。 就像学习windows开发从msdn开始一样,微软的产品虽然不开源,但是文档做的是相当的好。然而那些开源的东西呢?开源的竞争力其实就...

simpower
12分钟前
0
0
学习scala的网站汇总

https://www.codacy.com/blog/how-to-learn-scala/

Littlebox
14分钟前
0
0
配置本地的cloud9开发环境

前言 说到在线IDE开发环境,cloud9是不能绕过的,cloud9支持很多语言,默认支持的就有Node.js,Python,Ruby,PHP,Go,更逆天的是,他还支持数据库,包括MySQL,MongoDB,Redis,SQLite。但...

Kefy
18分钟前
0
0
springcloud应用程序上下文层次结构

如果您从SpringApplication或SpringApplicationBuilder构建应用程序上下文,则将Bootstrap上下文添加为该上下文的父级。这是一个Spring的功能,即子上下文从其父进程继承属性源和配置文件,因...

itcloud
23分钟前
0
0
新程序员最爱的免费资源

简评:国外美女程序员推荐了她自己用过的一些免费资源,对新手比较友好的那种。 原作者 Ali Spittel,是个美女程序员,以下这些资源都是她自己试过的。以下「我」代表 Ali Spittel。 学 HTML...

极光推送
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部