nginx+tomcat+redismemcached完成session共享

    xiaoxiao2021-03-25  64

    转自http://blog.csdn.net/grhlove123/article/details/48047735

    本文记录nginx+Redis+tomcat实现session共享的过程

    nginx安装:http://blog.csdn.net/grhlove123/article/details/47834673

    redis安装:http://blog.csdn.net/grhlove123/article/details/47783471

    准备两个tomcat,修改相应的端口

    名称IP端口tomcat版本JDKtomcat110.10.49.2380807.0.401.7.0_25tomcat210.10.49.1580817.0.401.7.0_25

    修改nginx.conf加上:

    [html]  view plain  copy upstream backend {       server 10.10.49.23:8080 max_fails=1 fail_timeout=10s;       server 10.10.49.15:8081 max_fails=1 fail_timeout=10s;   }   修改nginx.conf的location成 [html]  view plain  copy location / {       root   html;       index  index.html index.htm;       proxy_pass http://backend;    }   启动nginx。

    下载tomcat-redis-session-manager相应的jar包,主要有三个:

    wget https://github.com/downloads/jcoleman/tomcat-redis-session-manager/tomcat-redis-session-manager-1.2-tomcat-7-Java-7.jar wget http://central.maven.org/maven2/redis/clients/jedis/2.5.2/jedis-2.5.2.jar wget http://central.maven.org/maven2/org/apache/commons/commons-pool2/2.0/commons-pool2-2.0.jar

    下载完成后拷贝到$TOMCAT_HOME/lib中

    修改两tomcat的context.xml:

    [html]  view plain  copy <Context>          <!-- Default set of monitored resources -->       <WatchedResource>WEB-INF/web.xml</WatchedResource>          <!-- Uncomment this to disable session persistence across Tomcat restarts -->       <!--      <Manager pathname="" />      -->          <!-- Uncomment this to enable Comet connection tacking (provides events            on session expiration as well as webapp lifecycle) -->       <!--      <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />      -->        <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />     <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"      host="10.10.49.20"      port="6379"      database="0"      maxInactiveInterval="60" />   </Context>   在tomcat/webapps/test放一个index.jsp

    [html]  view plain  copy <%@ page language="java" %>   <html>     <head><title>TomcatA</title></head>     <body>           <table align="centre" border="1">         <tr>           <td>Session ID</td>           <td><%= session.getId() %></td>         </tr>         <tr>           <td>Created on</td>           <td><%= session.getCreationTime() %></td>        </tr>       </table>     </body>   </html>   sessionID:<%=session.getId()%>    <br>    SessionIP:<%=request.getServerName()%>    <br>    SessionPort:<%=request.getServerPort()%>    <%    //为了区分,第二个可以是222   out.println("This is Tomcat Server 1111");    %>    

    启动tomcat,发现有异常:com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve 类找不到

    分别打开三个jar包,确实没有这个类,解决可以参考:

    http://blog.csdn.net/qinxcb/article/details/42041023

    通过访问http://10.10.49.20/test/

    刷新:

    可以看到虽然Server从1111变为2222,但session的创建时间没有变化,这就完成了session共享。

    另外,Nginx+Tomcat+Memcached集群Session共享

        Memcached配置

       必备的JAR包:

    memcached-session-manager-1.6.5.jar、memcached-session-manager-tc7-1.6.5(tomcat6 请选tc6)、javolution-5.4.3.1.jar、msm-javolution-serializer-1.6.5.jar、spymemcached-2.10.3.jar 这些JAR都可以在:http://code.google.com/p/memcached-session-manager/downloads/list 这里下载到,网速慢,FQ吧~ couchbase-client-1.4.4.jar      下载地址:http://packages.couchbase.com/clients/java/1.4.4/Couchbase-Java-Client-1.4.4.zip 这个JAR在这个zip文件中 将Memcached的安装包解压到目录下,文件夹重命名为X:/memcached以管理员身份进入X:/memcached,执行命令memcached.exe –d install,现在memcached已经作为系统服务可以随机启动,默认端口:11211下面介绍几个常用的Memcached命令: 查看memcached的服务是否已经启动:tasklist /fi "imagename eq memcached.exe" memcached参数使用介绍 -p 监听的端口  -l 连接的IP地址, 默认是本机  -d start 启动memcached服务  -d restart 重起memcached服务  -d stop|shutdown 关闭正在运行的memcached服务  -d install 安装memcached服务  -d uninstall 卸载memcached服务  -u 以的身份运行 (仅在以root运行的时候有效)  -m 最大内存使用,单位MB。默认64MB  -M 内存耗尽时返回错误,而不是删除项  -c 最大同时连接数,默认是1024  -f 块大小增长因子,默认是1.25  -n 最小分配空间,key+value+flags默认是48  -h 显示帮助 Memcached的Tomcat配置【 处理Session同步的问题首先,将之前下载的JAR包全部拷贝到两个Tomcat的lib下。 接着,配置两个Tomcat的context.xml的文件:在Context标签内加入如下内容 [html]  view plain  copy   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"           memcachedNodes="n1:localhost:11211"<!-- Memcached只有一个节点,现在这么写就OK -->           requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$"            sessionBackupAsync="false"            sessionBackupTimeout="100"           transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"           copyCollectionsForSerialization="false"/>  

    转载请注明原文地址: https://ju.6miu.com/read-33762.html

    最新回复(0)