Tomcat 使用memcached 实现session共享
系统环境:
Centos6.5 x86_64
同台服务器上使用两个tomcat实例
安装jdk1.7
安装tomcat8.0.27
安装memcached
yum install yum install java-1.7.0-openjdk.x86_64 java-1.7.0-openjdk-devel.x86_64 memcached -y
下载并安装tomcat8
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.0.27/bin/apache-tomcat-8.0.27.tar.gz 安装: tar zxvf apache-tomcat-8.0.27.tar.gz cp -r apache-tomcat-8.0.27 /usr/local/tomcat1 cp -r apache-tomcat-8.0.27 /usr/local/tomcat2
使用nginx做为代理
下载并安装:
wget http://tengine.taobao.org/download/tengine-2.1.1.tar.gz tar zxvf tengine-2.1.1.tar.gz cd tengine-2.1.1 ./configure make make install
安装默认目录为:/usr/local/nginx
配置Nginx 这里就不多介绍了,之前文件也有详细介绍,请查阅^_^
下面来配置下tomcat连接memcached,存放session id
需要下载的文件,都是写这篇博文时的最新版本,下载的文件与tomcat的版本要对应。我这里使用的tomcat8所以下载的是tc8的版本
memcached-session-manager-1.8.3.jar
memcached-session-manager-tc8-1.8.3.jar
msm-javolution-serializer-1.8.3.jar
以上三个文件下载地址:http://repo1.maven.org/maven2/de/javakaffee/msm/
javolution-5.5.1.jar
下载地址:http://central.maven.org/maven2/javolution/javolution/5.5.1/javolution-5.5.1.jar
spymemcached-2.10.3.jar
下载地址:https://spymemcached.googlecode.com/files/spymemcached-2.10.3.jar #这个可能需要×××,,,附近件中给^_^
下载完成后反这些jar包放在 /usr/local/tomcat1/lib目录下,就是你的tomcat 目录下的lib目录
修改配置文件server.xml
大约在如下位置:
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false" >
<!-- 添加下面标红这些 --!>
<Context reloadable="false" path=""> 这里也可以设置为别名地址类似如下:<Context reloadable="true" path="/虚拟地址" docBase="真实路径">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:memcache地址:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="auto"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
/>
</Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
在另一个tomcat上也是如此的配置即可
下面是一个测试文件test.jsp放在tomcat的网页路径下,
内容如下:
SessionID:<%=session.getId()%>
<BR>
SessionIP:<%=request.getServerName()%>
<BR>
SessionPort:<%=request.getServerPort()%>
<%
out.println("This is Tomcat Server 111111!"); #这里区别两个tomcat的内容需要做下相应的修改
%>
经过测试Tomcat的session id已经共享了,暂时就不上图片了,,,,,。。。