最近在学习nginx+tomcat配置,随着不断深入,很快就遇到瓶颈,tomcat集群之后session就不能共享,话说这个也不难,但是之前没有做过这方面的配置,
随后在就网上查资料,主要配置session共享有两种
1:memcached (今天讲得重点)
2:ngx_upstream_jvm_route
第二种偶试过 可是再安装时,编译老报错,对C语言的不了解, 无奈之下只好放弃。
今天重点讲 nginx+memcached+tomcat7+session 配置
有关这个资料网上已经翻天了,但是偶在配置总是出错,之前可能是自己没有理解,后来清楚之后,主要问题在jar上。
由于官方说的不是很清楚,导致折腾了很久,最终还是成功了。欣喜万分,特来跟大家分享下,说的不好的地方,还希望大家多多指教!
首先下载必须得软件 如图
这里主要讲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
让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没变 说明成功了!
如果大家还有不明白的地方 可以联系偶!
未完待续……