tomcat 6.0.16
apache-2.2.8
mod_jk 1.2.26
一、tomcat 配置
修改两台tomcat的server.xml
加入:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> address及port可修改为不同的值,但集群内的配置必须相同。
在Engine配置项中加入jvmRoute如下:
配置Session复制
所有需要复制的session属性必须实现java.io.Serializable。
需要复制Session的应用web.xml加入<distributable/>元素。
如果使用mod_jk,需要在server.xml中配置Engine的jvmRoute,例如:<Engine name="Catalina" defaultHost="localhost" jvmRoute="node01" >,jvmRoute的名称要和workers.properties中匹配,且集群中的每一个节点都有自己的jvmRoute,不能重复。
集群中的节点时间应使用ntp服务同步。
apache中配置sticky session
需要jdk 1.5
配置apache
将mod_jk.so复制到modules目录中
修改httpd.conf,加入
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
JkMount /*.jsp controller
在conf目录下新建文本文件workers.properties,内容:
worker.list = controller,node01,node02
worker.node01.port=8009
worker.node01.host=localhost
worker.node01.type=ajp13
worker.node01.lbfactor = 1
worker.node02.port=8009
worker.node02.host=10.100.1.156
worker.node02.type=ajp13
worker.node02.lbfactor = 1
worker.controller.type=lb
worker.controller.balance_workers=node01,node02
worker.controller.sticky_session=1
node01,node02是节点机器的jvmRoute名称,port及host根据具体配置修改
测试
创建一个web应用,在web.xml中添加<distributable/>,应用根目录下编辑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>");
// 如果有新的 Session 属性设置
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>
浏览器中打开http://localhost/ClusterSession/test.jsp,添加Session属性,停掉第一个tomcat节点,刷新原有页面,发现Session已经被复制到第二台节点,apache也将浏览器导向了第二节点,集群已经生效。
分享到:
相关推荐
4. **Tomcat集群配置** - 需要在每台Tomcat服务器的`conf/server.xml`中配置Engine、Host和Context,以便支持集群环境。这通常涉及到定义一个`Cluster`元素,以及设置`sessionIDManager`和`Manager`。 - 同时,每...
Tomcat7 集群配置 Tomcat7 集群配置是指将多个 Tomcat 服务器组合成一个集群,以提高系统的可用性和可扩展性。在这个配置中,Session 复制机制是一个非常重要的部分,它可以确保在集群中的每个节点都可以访问到同一...
【标题】:“Tomcat集群配置” 在Web应用的高可用性和可扩展性需求日益增长的今天,Tomcat集群成为了一个重要的解决方案。Tomcat集群能够通过负载均衡和故障转移来提高服务的稳定性和性能。以下是对Tomcat集群配置...
首先,了解Tomcat集群的基础知识。集群是通过将多个独立的Tomcat实例连接在一起,形成一个整体,共同处理请求,提高系统性能和可用性。在Tomcat中,可以通过两种方式实现集群:基于网络的广播(JVMRoute)和基于内存...
#### 三、Apache+Tomcat集群配置步骤 **步骤1:环境准备** - 安装Apache。 - 安装两个Tomcat实例,并在各自的`webapps`目录下部署测试项目。 **步骤2:JK插件配置** - 将`mod_jk.so`复制到`<apache_home>/...
直接下载, 即可用 apache2.4+tomcat 7 集群配置
Apache2.2与Tomcat6集群配置教程 在IT行业中,服务器集群是一种常见的技术,用于提高系统的可用性和可扩展性。本教程将详细介绍如何在Apache2.2与Tomcat6环境下搭建集群,以实现负载均衡和高可用性。Apache作为前端...
Apache+Tomcat集群配置,Apache+Tomcat集群配置,Apache+Tomcat集群配置
Apache + Tomcat 集群配置 Apache + Tomcat 集群配置是指将 Apache 服务器与 Tomcat 服务器集成,以提高服务器的性能和可扩展性。本文将详细介绍如何配置 Apache + Tomcat 集群,包括安装 Apache 和 Tomcat 服务器...
首先,要理解Tomcat集群的基本概念。集群是一种通过多台服务器分担负载、提高服务可用性的技术。在Tomcat中,集群可以实现session复制,使得当一台服务器故障时,其他服务器能够接管其工作,保持服务不间断。此外,...
【服务器集群配置方法_tomcat】的描述涉及到了在IT领域中常见的服务器集群技术,特别是如何使用Apache HTTP Server和Tomcat应用服务器实现负载均衡。以下是详细的步骤和知识点解析: 1. **服务器集群环境**: - ...
文章apache_tomcat负载集群配置http://www.blogjava.net/pengo/archive/2011/04/15/348331.html的附件源码
当单个服务器无法满足高并发需求时,我们会采用集群配置,将多个Apache和Tomcat实例协同工作,以提高系统的可用性和负载均衡。 标题"Apache2.2与Tomcat7集群配置"所涉及的关键知识点包括: 1. **Apache mod_jk模块...
3. **集群配置**:Apache2和Tomcat6的集群配置涉及到多个层面。首先,要在Apache2中启用mod_jk,并配置JKWorkers文件,定义每个Tomcat实例(worker)的属性,如IP地址、端口等。然后,需要在Apache的虚拟主机配置中...
当我们需要处理高并发、负载均衡或提高应用可用性时,单个Tomcat实例可能无法满足需求,这时就需要进行Tomcat集群配置。本资料包包含了“tomcat集群配置”的程序及文档,提供了现成的例子,帮助我们理解和实践Tomcat...