apache+tomcat上篇文章,实现了负载均衡,现在我们实现session共享

一、tomcat集群配置,session 同步配置:

tomcat1配置 
A、修改Engine节点信息: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
B、去掉<Cluster>  <\Cluster> 的注释符
C、修改Cluster 节点信息
<Membership              
className="org.apache.catalina.cluster.mcast.McastService"

mcastBindAddress="127.0.0.1"

#IP自己配置,远程的话写远程IP               
mcastAddr="224.0.0.1"               
mcastPort="45564"   
mcastFrequency="500"               
mcastDropTime="3000"/>
      <Receiver          
className="org.apache.catalina.cluster.tcp.ReplicationListener"

tcpListenAddress="127.0.0.1"               
tcpListenPort="4001"               
tcpSelectorTimeout="100"               
tcpThreadCount="6"/>

tomcat2配置:
A、修改Engine节点信息: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
B、去掉<Cluster>  <\Cluster> 的注释符
C、修改Cluster 节点信息
<Membership      
className="org.apache.catalina.cluster.mcast.McastService"
mcastBindAddress="127.0.0.1"

#IP自己配置
mcastAddr="224.0.0.1"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver         
className="org.apache.catalina.cluster.tcp.ReplicationListener"         
tcpListenAddress="127.0.0.1"

#IP自己配置
tcpListenPort="4002"

# 一定要改
tcpSelectorTimeout="100"
tcpThreadCount="6"/>

修改web应用里面WEB-INF目录下的web.xml文件,加入标签
<distributable/>
直接加在</web-app>之前就可以了
做tomcat集群必须需要这一步,否则用户的session就无法正常使用。
注意事项

1、mcastAddr="224.0.0.1"这主广播地址因此需要开启网卡组播功能

route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

分别在各机器上运行

2、查看端口情况:Netstat –antl |grep 4001 同步监听的端口(2台tomcat在不同机器情况下)
tocat1

tomcat2

3、测试广播:

java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1

java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2

如果不报错则能正常广播tomcat-replication.jar 下载:[url]http://cvs.apache.org/~fhanik/tomcat-replication.jar[/url]如果是二台机器,可以用tcpdump 抓取包

二、测试集群及session同步

在2个tomct的webapps 下新建test 目录目录下建WEB-INF目录下的web.xml文件

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee [url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]"

version="2.4">

<display-name>TomcatDemo</display-name>

<distributable/>

</web-app>

再在webapps 下建立print.jsptest.jsp

Print.jsp :

<%

System.out.println("http://andashu.blog.51cto.com/);

%>

test.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
  out.println("<br> ID " + session.getId()+"<br>");
  String dataName = request.getParameter("dataName");
  session.setAttribute("myname","session?");
  if (dataName != null && dataName.length() > 0) {
     String dataValue = request.getParameter("dataValue");
     session.setAttribute(dataName, dataValue);
  }
  out.print("<b>Session P±?b>");
  Enumeration e = session.getAttributeNames();
  while (e.hasMoreElements()) {
     String name = (String)e.nextElement();
     String value = session.getAttribute(name).toString();
     out.println( name + " = " + value+"<br>");
         System.out.println( name + " = " + value);
   }
%>
  <form action="index.jsp" method="POST">
    3?<input type=text size=20 name="dataName">
     <br>
    ?:<input type=text size=20 name="dataValue">
     <br>
    <input type=submit>
   </form>
</body>

</html>

重启所有的服务。
 
如图可以看出tomcat 集群配置完成
 
Session 复制的查看:
在同一窗口,输入名称和值,
在2个tomcat日志里能看到同样内容的日志,就表明成功了。
 

apache+tomcat实现session共享的更多相关文章

  1. 配置tomcat的session共享

    可通过下面方法限制一个用户访问一个服务器之后就只在该服务器上操作. 请求负载过程中会话信息不能丢失.那么在多个tomcat中session需要共享. 配置tomcat的session共享可以有三种解决 ...

  2. 高级运维(五):构建memcached服务、LNMP+memcached、使用Tomcat设置Session、Tomcat实现session共享

    一.构建memcached服务 目标: 本案例要求先快速搭建好一台memcached服务器,并对memcached进行简单的添.删.改.查操作: 1> 安装memcached软件,并启动服务d ...

  3. Apache代理Tomcat实现session共享构建网上商城系统

    一.环境介绍 二.安装配置后端服务器 三.安装配置前端服务器 四.配置Tomcat服务器实现session共享 五.构建网上商城系统 一.环境介绍 系统版本:CentOS 6.4_x86_64 Mys ...

  4. (转)tomcat架构&session共享

    (二期)16.tomcat的整体架构与session共享方案 [课程16]tomcat...共享.xmind47.6KB [课程16]tomcat...流程.xmind0.6MB [课程16]tomc ...

  5. Tomcat负载均衡、调优核心应用进阶学习笔记(三):LNMT nginx+tomcat、LAMT apache+tomcat、session会话保持、不错的站点

    文章目录 LNMT nginx+tomcat LAMT apache+tomcat 基于mod_proxy 单节点 配置基于mod_proxy的负载均衡 基于mod_jk(需要编译安装) 单节点 配置 ...

  6. 浅谈负载均衡之【tomcat分布式session共享】

    1)整理集成所需jar kryo-1.0.3.jar kryo-serializers-0.8.jar memcached-2.4.2.jar memcached-session-manager-1. ...

  7. memached实现tomcat的session共享

    由于项目服务器用的阿里云的ECS,Memcached也采用的阿里云.多个tomcat集群的session都存储在一个云memcached中. 配置步骤如下: 一.tomcat增加memcached支持 ...

  8. Tomcat中session共享问题的简单解决办法

    tomcat-redis-session-manager 使用redis配置tomcat共享session 结构图: 分析: 分布式web server集群部署后需要实现session共享,针对 to ...

  9. tomcat memecached session 共享同步问题的解决

    事件缘由:一个主项目“图说美物”,另外一个子功能是品牌商的入驻功能,是跟主项目分开的项目,为了共享登录的用户信息,而实现session共享,俩个tomcat,一个tomcat6,一个tomcat7 w ...

随机推荐

  1. ajax传值给php

    test.php <script type="text/javascript"> function selectInput(oSelect) { var value= ...

  2. 后台测试常需要的htm样式

    <form name="form" method="post" action="#"> <input type=" ...

  3. android jni aotf 错误

    在jni中希望将字符串转成浮点型数据,使用了atof函数.出现错误: failed: Cannot load library: soinfo_relocate(linker.cpp:975): can ...

  4. 在不指定特殊属性的情况下,哪几种HTML标签可以手动输入文本:()

    A. <TEXTAREA></TEXTAREA> B. <INPUT type=”text”/> C. <INPUT type=”hidden”/> D ...

  5. Node.js进程通信模块child_process

    前言 Node.js是一种单线程的编程模型,对Node.js的赞美和诟病的也都是因为它的单线程模型,所有的任务都在一个线程中完成(I/O等例外).单线程模型,不仅让代码非常简洁,更是直接避免了线程调度 ...

  6. openal 基础知识3

    四创新科技extension (Creative Labs'Extensions) 创新科技为OpenAL添加了多个extensions,许多都利用了他们声卡的特性. “Enumerate All”e ...

  7. openstack中nova组件Hypervisors、Floating_ips的全部python API 汇总

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  8. Ubuntu Server 下的网络配置

    $ ifconfig 配置DHCP客户端$ sudo vi /etc/network/interfaces加入 iface eth0 inet dhcp 配置静态IP地址$ sudo vi /etc/ ...

  9. sql 字符串操作

    SQL Server之字符串函数   以下所有例子均Studnet表为例:  计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student ...

  10. Unity5.5+easytouch5双摇杆控制角色移动

    第一步:新建两个Joystick,分别改名LeftJoyStick和RightJoyStick 在LeftJoyStick的ETC Joystick-Axes properties中的Horizont ...