worker.controller.sticky_session=true
workers.properties设置
修改tomcat server配置文件
添加
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
</Engine>
jvmRoute值与workers.properties中配置相同
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"
waitForAck="true"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
server.xml中注释去掉
根据需要修改此处端口
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
然后在test 新建WEB-INF目录,WEB-INF下新建web.xml,内容如下
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Cluster Demo</display-name>
<distributable/>
</web-app>
新建session.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster Session</title></head>
<body>
<%
out.println("<br> ID " + session.getId()+"<br>"); System.out.println( "sessionid = " + session.getId());
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="session.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>
test复制到tomcat1,tomcat2的webapps下,重启apache,tomcat1,tomcat2,
分享到:
相关推荐
在IT领域,特别是Web应用服务器的管理与优化中,Tomcat集群实现Session复制是一个关键的技术点,它确保了高可用性和负载均衡,特别是在处理大量并发请求的场景下。本文将深入探讨这一主题,涵盖其原理、配置方法以及...
本篇文章将详细探讨如何在Redis+Tomcat集群配置中实现Session共享。 首先,我们需要理解什么是Session。Session是Web应用中用于存储用户状态的一种机制,通常用于保存用户的登录信息、购物车等数据。在单台服务器...
随着互联网应用的复杂性和用户量的增长,单个服务器往往无法满足需求,因此采用分布式部署的模式,比如多台Tomcat服务器组成的集群,成为普遍选择。然而,这种部署方式会带来Session管理的挑战,因为Session数据通常...
5. **集群同步策略**:Tomcat可以通过`distributable`属性在`web.xml`中声明应用可分布式部署,这会启用session ID的跨节点同步。同时,`Manager`配置中的`copyOnWrite`属性控制了session更新时是否需要完全复制整个...
在分布式环境中,尤其是在Web应用服务器如Tomcat的集群部署中,SESSION复制是确保用户会话状态跨多个服务器连续性的重要技术。传统的单服务器部署在服务器故障时会导致SESSION丢失,用户需要重新登录并重新输入数据...
学员将学习Nginx的负载均衡策略,比较其优缺点,并亲手搭建Tomcat集群,体验集群部署的优势和随之带来的新挑战,如 session 共享和故障转移等。 5. **Redis分布式**: 作为高性能的分布式缓存,Redis在电商项目中...
技术:reids集群 nginx部署 tomcat负载均衡 说明包含: nginx+redis+tomcat分布式负载均衡文档 session共享资料 安装程序 nginx+redis+tomcat分布式负载均衡部署帮助文档 nginx+redis+tomcat分布式负载均衡...
这可能包括了Apache的虚拟主机配置、mod_proxy模块的启用、TOMCAT集群的配置以及session复制的实现步骤。通过学习这个demo,你可以了解到具体的配置细节和操作流程,这对于实际项目部署非常有帮助。 总的来说,...
本文将围绕“Redis + Tomcat + Nginx”的分布式部署模式进行深入探讨,包括Nginx的负载均衡配置、Tomcat的分布式部署及Redis实现的Session共享机制。 #### 一、Nginx配置负载均衡 Nginx作为一款高性能的HTTP和反向...
然而,当Tomcat集群中的多个实例运行时,每个实例都有自己的内存存储session,这可能导致用户在不同服务器间切换时丢失session数据。为了解决这个问题,我们可以利用外部存储,如Redis,来实现session的共享。以下将...
### Apache+Tomcat 分布式部署详解 #### 一、软件环境准备 为了实现Apache与Tomcat的分布式部署,首先需要准备以下软件环境: - **Apache**: 本例使用的是`apache_2.2`版本。 - **Tomcat**: 使用`apache-tomcat-...
1. **Session复制**:默认情况下,Tomcat会在本地存储Session数据,但在集群环境下,需要配置每个实例之间进行Session复制,以保持会话一致性。 2. **Memcached Session Manager**:安装并配置Tomcat的Memcached ...
当我们在部署Tomcat7集群时,为了确保用户的Session能够在不同服务器之间无缝切换,我们可以利用Redis来实现Session共享。下面将详细介绍如何利用Redis与Tomcat7配合实现Session共享,并对相关知识点进行深入探讨。 ...
本套资源“【全套】tomcat集群Session共享”就是为了解决这个问题,通过集成Redis来实现Session的分布式共享。 Redis是一个高性能的键值数据库,常被用作缓存服务,它的高速读写能力和丰富的数据结构使得它成为...
本文将详细介绍如何在Windows环境下,利用Nginx作为反向代理服务器,与Tomcat集群配合实现负载均衡,并进行session复制,确保用户会话在不同服务器之间的一致性。 首先,Nginx是一款轻量级、高性能的HTTP和反向代理...
- **测试集群**:部署应用并启动Tomcat集群,进行测试以确保session能够在各个节点间正确复制。 - **性能调整**:根据实际负载情况,可能需要调整Memcached的参数,如超时时间、缓存策略等,以优化性能。 6. **...
在这个场景中,我们关注的是如何在Tomcat集群环境中实现Session共享,以便提高应用程序的可扩展性和可用性。标题和描述提到的“session共享包”是解决这一问题的关键。 **什么是Session?** 在Web应用中,Session是...
分布式部署是大型系统或高并发环境下的常见解决方案,它可以将负载分散到多个服务器上,降低单点故障的风险,同时提高服务的响应速度。 分布式Tomcat的实现通常涉及以下几个关键知识点: 1. **负载均衡**:通过...
通过复制应用和配置,可以创建一个Tomcat集群,这样当一台服务器出现故障时,其他服务器能够接管其工作,保证服务的连续性。然而,由于每个Tomcat实例都有自己的内存空间,所以默认情况下,每个服务器会独立维护用户...
3. **安装和配置Tomcat**:在每台服务器上部署相同的Tomcat实例,确保应用的web.xml文件配置了session复制,例如启用`<distributable/>`标记。同时,需要配置Tomcat监听不同的端口,以便Nginx能够将请求正确地分发到...