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 &quot;%r&quot; %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已经共享了,暂时就不上图片了,,,,,。。。