文档章节

Nginx+memcached+tomcat7+session

樱花泪
 樱花泪
发布于 2014/04/11 19:58
字数 711
阅读 2134
收藏 20

Nginx+memcached+tomcat7+session

前言

最近在学习nginx+tomcat配置,随着不断深入,很快就遇到瓶颈,tomcat集群之后session就不能共享,话说这个也不难,但是之前没有做过这方面的配置,

随后在就网上查资料,主要配置session共享有两种

1memcached (今天讲得重点)

2ngx_upstream_jvm_route

第二种偶试过 可是再安装时,编译老报错,对C语言的不了解, 无奈之下只好放弃。

今天重点讲 nginx+memcached+tomcat7+session 配置

有关这个资料网上已经翻天了,但是偶在配置总是出错,之前可能是自己没有理解,后来清楚之后,主要问题在jar上。

由于官方说的不是很清楚,导致折腾了很久,最终还是成功了。欣喜万分,特来跟大家分享下,说的不好的地方,还希望大家多多指教!

1.安装

首先下载必须得软件 如图

这里主要讲memcached

先下载libevent-1.4.14b-stable.tar.gz和memcached-1.4.7.tar.gz的源码包,前者是后者的依赖包,就是一个事件驱动的包。

  2)编译安装命令:

1.  tar zxvf libevent-1.4.14b-stable.tar.gz 

2.  cd libevent-1.4.14b-stable 

3.  ./configure --prefix=/usr/local/libevent-1.4.14b 

4.  make 

5.  make install 

6.   

7.  tar zxvf memcached-1.4.7.tar.gz 

8.  cd memcached-1.4.7 

9.  ./configure --prefix=/usr/local/memcached-1.4.7 --with-libevent=/usr/local/libevent-1.4.14b/ 

10. make 

11. make install 

启动memcached:

./bin/memcached -d -m 256 -u root -p 11211 -c 1024 -P /tmp/memcached.pid –vv

 

 

2.memcached-session-manager配置

 

让tomcat调用memcached来存储session早就是一个很成熟的解决方案了,开源的msm就可以解决这个问题。比较折腾的就是要用到的jar包,官方文档说的也比较含糊,我这里用的是kryo的序列化方案,所以用到的包多一些,分别是

以上这些包都放在$CATALINA_HOME/lib目录下。

接下来是修改tomcat的配置文件$CATALINA_HOME/conf/context.xml,调整成新的session存储方式。配置文件中加入以下内容:

1.  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 

2.        memcachedNodes="n1:127.0.0.1:11211" 

3.        sticky="false" 

4.        lockingMode="auto" 

5.        sessionBackupAsync="false"   

6.        sessionBackupTimeout="1000"  

7.        transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 

8.        /> 

 在$CATALINA_HOME/conf/logging.properties文件中添加de.javakaffee.web.msm.level=FINE,就可以在catalina.out的日志中看到详细的session存取情况。

 修改$CATALINA_HOME/conf/server.xml,多个tomcat更改端口不要一样,确保端口的唯一,否则启动会报错,导致启动不了

然后启动各个服务 如图

 

页面有变化,但是sessionID没变 说明成功了!

如果大家还有不明白的地方 可以联系偶!

未完待续……


© 著作权归作者所有

樱花泪
粉丝 6
博文 14
码字总数 4417
作品 0
余姚
项目经理
私信 提问
加载中

评论(2)

leo_soul
leo_soul
兄弟,求指教,我的也是这种配置方案,同样采用kryo的序列化方式。nginx采用默认的轮询式的upstream做集群。现在的现象是,访问jsp(内包含session.getId()),从tomcat1生成一个sessionid,刷新页面,访问tomcat2的同一个页面,sessionid保持不变,attribute中内容不变,再次刷新,访问到tomcat1,此时服务器返回的response中竟然强行指定了一个新的sessionid。于是session丢失。这是咋回事儿?????求指教,请见快联系,邮件
leo_soul@126.com
qq 306458799
拜托了,我们公司挺急的,这周干完,干不完我可能就得离职了。
fionchou
fionchou
设置session过期时间为1分钟,但是到了一分钟没有过期,没有调用sessionDestroyed或者valueUnbound,应该怎么设置memcached?​​

暂无文章

solidity智能合约如何判断地址为0或空

智能合约地址判断 在旧版本中可使用以下代码来进行比较: owner != 0x0 但如果在新版本中使用,则会提示错误信息。 那么,如何正确使用来比较地址是否为空呢。 解决方案 可以使用address(0...

程序新视界
17分钟前
3
0
RDS 5.7三节点企业版时代的数据一致性解决方案

  上篇我们看到了在MySQL主备模式下,我们在数据一致性上做了不少事情,但解决方案都有一定的局限性,适合部分场景或者解决不彻底的问题。随着以Google Spanner以及Amazon Aruora 为代表的...

阿里云官方博客
18分钟前
2
0
【百度飞浆AI Studio】1、百度飞浆AI Studio的初次使用

百度在AI人工智能方面的发力巨大,开源了优秀的PaddlePaddle平台,为开发者提供支持。 环境方面和硬件配备方面如果对于新手来说还是比较麻烦,及时使用Docker也还是对使用者有一定的门槛要求...

-个俗人
22分钟前
1
0
SaaS

什么是SaaS? SaaS(Software as a Service),即多租户(或多承租)软件应用平台. SaaS是这样一种架构模式:它让多个不同环境的用户使用同一套应用程序,且保证用户之间的数据相互隔离。 多租...

禅明
25分钟前
1
0
Nginx常用命令

#Nginx常用命令 nginx -V(大写)查看已安装的nginx安装了什么模块及其详细版本信息nginx -v查看nginx版本nginx -tnginx检查配置文件是否正确,同时显示配置文件路径nginx -c...

我爱吃炒鸡
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部