环境centos6.7,下载安装必要的软件:yum -y install epel-release(tomcat7在此源上,tomcat7是现在主流版本)

yum -y install tomcat  直接下载tomcat7,   yum -y install java-1.7.0-openjdk-devel (tomcat需要运行在java虚拟机上)

vim /etc/tomcat/server.xml   修改配置文件

      <Host name="web.com"  appBase="/data/webapps/"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/data/webapps" reloadable="true" >
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.238.250:11211,n2:192.168.238.251:11211"
failoverNodes="n2"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>
</Context>
</Host>

上面的字自己都看不清还是贴个图吧

自定义了一台虚拟主机:<Host name="web.com"  appBase="/data/webapps/" unpackWARs="true" autoDeploy="true">

在此虚拟主机上添加了Context:<Context path="" docBase="/data/webapps" reloadable="true" >

关键是manager这段:

  为manager取个全局唯一名字:<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

  定义有哪些memcached服务器节点:memcachedNodes="n1:192.168.238.250:11211,n2:192.168.238.251:11211"

  定义备用节点:failoverNodes="n2"

  对那些请求url忽略:requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

  固定格式:transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>

  

把默认虚拟主机定义为web.com:

JvmRoute="TomcatA" 是在请求web.com的session id中添加JvmRoute="TomcatA",此实验中可不用添加

创建页面资源:mkdir -p /data/webapps/{WEB-INF,classes,lib}    cd /data/webapps/  vim index.jsp

jsp页面资源如下

<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color="red">TomcatA.test</font></h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("test","test"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>

贴个图:

下载如下几个包:javolution-5.5.1   memcached-session-manager-1.8.2   memcached-session-manager-tc7-1.8.2

msm-javolution-serializer-1.8.2  spymemcached-2.10.2    这几个包作用:java通过memcached实现session管理

上面这几个包的下载地址:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration

把上面几个包放在/usr/share/tomcat/lib/ 目录下 (注意上面几个包不要下错了,这又是个潜在的坑)

这几个包的版本一定要对,我在这踩了一天的坑,如果你的是tomcat8,对应的memcached-session-manager-tc8-1.8.2

两台memcached各自放在两台tomcat上,使用yum -y install memcached下载就行了

把上面的步骤在tomcatA上的步骤,在tomcatB上执行一遍,tomcatB上的jsp页面资源中的TomcatA改为TomcatB,red改为blue

前端再架设一台Nginx实现负载均衡,启动memcached,启动tomcat,启动Nginx,去浏览器验证

验证成功,Session ID保持一样

使用memcached实现tomcat集群session共享的更多相关文章

  1. 基于Memcached的tomcat集群session共享所用的jar

    多个tomcat各种序列化策略配置如下:一.java默认序列化tomcat配置conf/context.xml添加<Manager className="de.javakaffee.w ...

  2. 基于Memcached的tomcat集群session共享所用的jar及多个tomcat各种序列化策略配置

    原文:http://www.cnblogs.com/interdrp/p/4096466.html 多个tomcat各种序列化策略配置如下:一.java默认序列化tomcat配置conf/contex ...

  3. Nginx+Tomcat集群+session共享

    Nginx+Tomcat集群+session共享 1)安装Nginx 2)配置多个Tomcat,在server.xml中修改端口(端口不出现冲突即可) 3)在nginx.conf文件中配置负载均衡池, ...

  4. Shiro+Redis实现tomcat集群session共享

      一.背景 当我们使用了nginx做项目集群以后,就会出现一个很严重的问题亟待解决,那就是:tomcat集群之间如何实现session共享的问题,如果这个问题不解决,就会出现登陆过后再次请求资源依旧 ...

  5. JEECG & JEESite Tomcat集群 Session共享

    多台tomcat服务的session共享 memcached与redis - JEECG开源社区 - CSDN博客https://blog.csdn.net/zhangdaiscott/article ...

  6. tomcat集群session共享

    Tomcat集群配置其实很简单,在Tomcat自带的文档中有详细的说明( /docs/cluster-howto.html ),只不过是英语的,对我这样的人来说很难懂   .   下面根据说下怎么配置 ...

  7. 160513、nginx+tomcat集群+session共享(linux)

    第一步:linux中多个tomcat安装和jdk安装(略) 第二步:nginx安装,linux中安装nginx和windows上有点不同也容易出错,需要编译,这里做介绍 一.安装依赖 gcc open ...

  8. redis实现tomcat集群session共享

    1.部署两个tomcat节点,使用nginx实现集群(见http://www.cnblogs.com/zhangzhi0556/articles/nginx.html):   2.redis安装(见h ...

  9. 160512、nginx+多个tomcat集群+session共享(windows版)

    第一步:下载nginx的windows版本,解压即可使用,点击nginx.exe启动nginx 或cmd命令 1.启动: D:\nginx+tomcat\nginx-1.9.3>start ng ...

随机推荐

  1. Regional Changchun Online--Travel(最小生成树&& 并查集)

    Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total S ...

  2. Spark On Yarn:提交Spark应用程序到Yarn

    转载自:http://lxw1234.com/archives/2015/07/416.htm 关键字:Spark On Yarn.Spark Yarn Cluster.Spark Yarn Clie ...

  3. python 调用内部类的两种方法

    class Car:#外部类 class Door:#内部类 def open(self): print('open door') class Wheel: def run(self): print( ...

  4. Kafka单机版环境搭建

    使用版本:kafka_2.10-0.8.1.1 安装: -0.8.1.1.tgz -C ~/app/ 添加环境变量:.bash_profile export KAFKA_HOME=/home/spar ...

  5. Java EXCEL导入的两种方式JXL和POI

    Excel导入有两个方法:JXL 和POI 1.JXL解析Excel public class JxlReadExcel { /**     * JXL解析Excel     * @author Da ...

  6. 学习记录 java session保存用户登录

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. IoGetDeviceObjectPointer .

    从名字获得设备对象 驱动的起始地址,大小等信息.

  8. CreateThread和_BeginThread的区别

    1.程序: 程序构成: (1)源代码 (2)可执行的二进制代码 程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念.由操作系统加载其可执行的二进制代码,分配相应的数据结构:进程控制 ...

  9. 【缓存】利用Cache防止同一帐号重复登录

    需求概要 对于B/S应用系统中客户经常会提出同一帐号不能重复登录的需求,就是说,用某一帐号登录系统后,在系统不超时的情况下,任何人都不能再用目前已登录的帐号登录系统.包括我目前的项目中同样有这一需求. ...

  10. linux 编译,链接和加载

    1.   序 最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措.索性化了一天多时间将<<程序员的自我修养—链接.装载与库>>中部分内容略读了一遍 ...