`
qq362228416
  • 浏览: 33246 次
社区版块
存档分类
最新评论

apache tomcat 集群 + session 复制

 
阅读更多

发过篇关于apache 跟 tomcat 多站点配置 整合的,所以这部分今天就不多说了,主要还是标题为主

集群这个东西说来话长,我长话短说

主要目标

1、能够使用apache 跟 tomcat 实现集群

2、能保证tomcat之间进行session值复制


测试环境:apache2.2 、tomcat 7.0

步骤一:加载mod_proxy_balancer.so 集群模块,网上都喜欢说找个这个东西,然后把前面的#号去掉,但是我懒一点不想找,如果你确定你以前没有配置过得话,直接在

httpd.conf 的最下面加上以下一句:

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

步骤二:再加上以下几句

ProxyPass /examples  balancer://test stickysession=jsessionid nofailover=On
<proxy balancer://test/>
    BalancerMember http://127.0.0.1:8080/examples  loadfactor=1 route=jvm1
    BalancerMember http://127.0.0.1:9080/examples  loadfactor=1 route=jvm2
</proxy>

简单说一下

这里跟反向代理差不多,只不过以前代理后面直接跟的是目标服务器,现在变成了一个集群组了

上面的test 是集群名字,随意取

BalancerMember 后面的是集群成员,后面的东西就不用多说了,随便看看就知道大概什么意思了

每个BalancerMember 代表一个集群,这里只有两个,当然还可以更多

/examples 是tomcat 自带的一个应用,用它来测试一下就足以说明问题了

启动两个tomcat,然后启动apache2.2

如果你apache 没有配置过反向代理的话,会报错,配置过的话就没问题,没配置过的就加上

LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

步骤三:在每个tomcat 的webapps目录下的examples的WEB-INF/web.xml里面加上以下一句

<distributable/>

这叫的作用是现实session复制,挺简单的,加在头尾都行,我的是这样:

 <description>
      Servlet and JSP Examples.
    </description>
    <display-name>Servlet and JSP Examples</display-name>

	<distributable/> 

步骤四:配置tomcat,分别修改tomcat的 server.xml 配置文件,

Engine标签加上jvmRoute="jvm1"属性,之后变成:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

把Engine下面的

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

注释去掉即可

上面的jvm1 分别用来表示tomcat的,另外一个tomcat可以用jvm2这样

测试一下

新建一个test.jsp ,假如内容来测试

<%@ page contentType="text/html; charset=UTF-8" %> 
<%@ 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");  
    
  if (dataName != null && dataName.length() > 0) {  
     String dataValue = request.getParameter("dataValue");  
     session.setAttribute(dataName, dataValue);  
  }    
    
  out.print("<b>Session 列表</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="test.jsp" method="POST"> 
    名称:<input type=text size=20 name="dataName"> 
     <br> 
    值:<input type=text size=20 name="dataValue"> 
     <br> 
    <input type=submit> 
   </form> 
</body> 
</html> 

分别复制一份到两个tomcat 的webapps 下的examples 目录下

最后

打开浏览器,访问 http://127.0.0.1/examples/test.jsp


看到以上界面说明成功了,不断刷新,会发现端口跟jvm会一直切换

说明集群已经起效了

填上session name 跟值,提交 不管你怎么刷新,tomcat 怎么变,值都不会丢失,当然session id 也没变

到这里就告一段落了,更多详情参考官网文档

分享到:
评论

相关推荐

    apache + tomcat 集群+session复制解决方案

    Apache 和 Tomcat 集群配合 Session 复制是一种常见的高可用性和负载均衡解决方案,尤其适用于大型网站和企业级应用。以下将详细解释这个方案的关键点。 **整体方案策略** 1. **部署逻辑图** 部署逻辑通常包括...

    tomcat集群实现session复制

    在IT领域,特别是Web应用服务器的管理与优化中,Tomcat集群实现Session复制是一个关键的技术点,它确保了高可用性和负载均衡,特别是在处理大量并发请求的场景下。本文将深入探讨这一主题,涵盖其原理、配置方法以及...

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    apache tomcat 集群 负责均衡 session复制

    NULL 博文链接:https://xueweiabcok.iteye.com/blog/1841448

    redis+tomcat集群配置session共享

    本篇文章将详细探讨如何在Redis+Tomcat集群配置中实现Session共享。 首先,我们需要理解什么是Session。Session是Web应用中用于存储用户状态的一种机制,通常用于保存用户的登录信息、购物车等数据。在单台服务器...

    Tomcat+Apache集群安装指南.pdf

    本文主要介绍了如何在Windows和Linux环境下搭建Tomcat集群并使用Apache作为集群的代理服务器和负载均衡器。通过本指南,读者可以学习到在不同操作系统下进行集群配置的具体步骤。 #### 二、准备工作 在开始安装之前...

    tomcat6+session+memcached

    【标题】"tomcat6+session+memcached" 涉及的知识点主要集中在Web服务器Tomcat6的配置与使用,以及如何通过Memcached实现Session的共享存储。 【描述】"jdk7+tomcat6+memcached。依赖包" 提示了这个环境是基于Java ...

    一台xp机器实现apache+tomcat session复制.docx

    **Session复制**是通过JK模块在Apache和Tomcat之间传递Session信息,使得用户在集群中的不同Tomcat服务器之间切换时,仍能保持登录状态和其他会话信息。这通常需要在`workers.properties`文件中进行详细配置,并且在...

    性能调优 海量并发 系统架构

    Apache+Tomcat+Session+Memcache 高性能群集搭建 J2EE性能调优 Jboss的优化配置 Memcached分布式缓存 Nginx+Tomcat 动静分离 Nginx+tomcat集群Memcached+Session复制 高性能高并发服务器架构 基于nginx的tomcat负载...

    tomcat7+redis集群 session共享jar

    通过这种方式,"tomcat7+redis集群 session共享jar"可以帮助开发者解决在Tomcat7集群中Session共享的问题,提升系统的可扩展性和可用性。在大型网站和分布式应用中,这样的解决方案能够保证用户在不同服务器之间切换...

    apache+tomcat集群配置

    Apache + Tomcat 集群配置 Apache + Tomcat 集群配置是指将 Apache 服务器与 Tomcat 服务器集成,以提高服务器的性能和可扩展性。本文将详细介绍如何配置 Apache + Tomcat 集群,包括安装 Apache 和 Tomcat 服务器...

    tomcat cluster 集群 session复制

    而实际情况下,采取Apache 加Tomcat进行负载均衡集群的时候,是可以不用将Session复制到所有的节点里, 比如有六个Tomcat实例 Tomcat1,Tomcat2,Tomcat3,Tomcat4,Tomcat5,Tomcat6 是可以配置成 三组互相复制...

    nginx+tomcat6+session共享

    标题中的“nginx+tomcat6+session共享”指的是在Web服务器和应用服务器的集群环境中,如何通过Nginx、Tomcat6以及Session共享技术来实现用户会话在多个服务器之间的同步。这一配置对于高并发、高可用的系统设计至关...

    Tomcat7+Redis+Session

    通过【压缩包子文件的文件名称列表】中的`Tomcat7-Redis-Session`和`apache-tomcat-7.0.61`,你可以找到案例的详细配置文件和Tomcat7的安装包,进一步了解和实践这个解决方案。通过实际操作,你将更深入地理解如何将...

    Apache+Tomcat+JK 实现集群负载均衡文档

    Apache+Tomcat+JK 实现集群负载均衡是一种常见的Web服务器和应用服务器的部署方式,它能够提高系统的可用性和响应速度,实现服务的高并发处理。本文将详细介绍如何配置这一环境。 首先,我们需要准备以下软件: 1. ...

    tomcat集群session共享

    以下是实现Tomcat集群session共享与Redis结合的步骤和知识点: 1. **配置Redis服务器**:首先,你需要安装并运行一个Redis实例。确保其稳定运行,并且能够被集群中的所有Tomcat服务器访问。 2. **选择session复制...

Global site tag (gtag.js) - Google Analytics