1、实验环境

  我们需要准备两台虚拟机,把这两台虚拟机组成集群,实现会话保持。

2、配置server1

2.1 修改nginx配置文件

[root@server1 ~]# vim /etc/nginx/nginx.conf

      upstream tomcat_cluser {
#ip_hash;
server 192.168.37.111:8080 weight=1;
server 192.168.27.122:8080 weight=2;
} location / {
#index index.php index.html index.htm;
proxy_pass http://tomcat_cluser;
} location ~* \.(jsp|do)$ {
proxy_pass http://tomcat_cluser;
}

  修改完成之后,重启我们的nginx服务。

2.2 修改tomcat配置文件

[root@server1 ~]# vim 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"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

2.3 创建一个session页面

[root@server1 webapps]# mkdir test
[root@server1 webapps]# vim test/session.jsp
<%@ page language="java" %>
<html>
<head><title>TomcatA</title></head>
<body>
<h1><font color="blue">TomcatA</h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("abc","abc"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>

2.4 修改web.xml

[root@server1 webapps]# cd test/
[root@server1 test]# ls
session.jsp
[root@server1 test]# mkdir WEB-INF/
[root@server1 test]# cp /usr/local/tomcat/conf/web.xml WEB-INF/
[root@server1 test]# cd WEB-INF/
[root@server1 WEB-INF]# ls
web.xml
[root@server1 WEB-INF]# vim web.xml

  在web.xml下 在</web-app>上方加入<distributable/>

  设置一个标签



  修改完成之后,重启我们的tomcat服务:

[root@server1 WEB-INF]# catalina.sh stop
[root@server1 WEB-INF]# catalina.sh start

  接着,我们就去修改第二台机器。

三、配置server2

3.1 修改tomcat配置文件

  本台机器和第一台机器的设置相似,直接把文件拷过来就可以了:

[root@server1 ~]# scp /usr/local/tomcat/conf/server.xml root@192.168.37.122:~
root@192.168.37.122's password:
server.xml 100% 8026 7.8KB/s 00:00
[root@server2 conf]# cp ~/server.xml .
cp: overwrite ‘./server.xml’? yes

3.2 创建一个session页面

[root@server2 webapps]# mkdir test
[root@server2 webapps]# vim test/session.jsp
<%@ page language="java" %>
<html>
<head><title>TomcatB</title></head>
<body>
<h1><font color="blue">TomcatB</h1>
<table align="centre" border="1">
<tr>
<td>Session ID</td>
<% session.setAttribute("abc","abc"); %>
<td><%= session.getId() %></td>
</tr>
<tr>
<td>Created on</td>
<td><%= session.getCreationTime() %></td>
</tr>
</table>
</body>
</html>

3.3 修改web.xml

[root@server2 webapps]# cd test/
[root@server2 test]# ls
session.jsp
[root@server2 test]# mkdir WEB-INF/
[root@server2 test]# cp /usr/local/tomcat/conf/web.xml WEB-INF/
[root@server2 test]# cd WEB-INF/
[root@server2 WEB-INF]# ls
web.xml
[root@server2 WEB-INF]# vim web.xml

  在web.xml下 在</web-app>上方加入<distributable/>

  设置一个标签



  修改完成之后,重启我们的tomcat服务:

[root@server2 WEB-INF]# catalina.sh stop
[root@server2 WEB-INF]# catalina.sh start

四、测试

  我们直接去网页测试我们的会话保持实现没有:





  可以看出,我们的会话保持已经实现。

  实验完成。

实现基于tomcat集群会话保持的更多相关文章

  1. 基于tomcat集群做session共享

    前端代理服务器nginx:192.168.223.136 tomcat服务器:采用的一台多实例192.168.223.146:8081,192.168.223.146:8082(如何构建多实例tomc ...

  2. 02 . Tomcat集群会话共享

    redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...

  3. 19.Tomcat集群架构

    1.Nginx+Tomcat集群架构介绍 2.Nginx+Tomcat集群架构实战 [root@lb01 conf.d]# cat proxy_zrlog.cheng.com.conf upstrea ...

  4. 基于Tomcat的Solr3.5集群部署

    基于Tomcat的Solr3.5集群部署 一.准备工作 1.1 保证SOLR库文件版本相同 保证SOLR的lib文件版本,slf4j-log4j12-1.6.1.jar slf4j-jdk14-1.6 ...

  5. 通过 Terracotta实现基于Tomcat的Web应用集群

    [转]通过 Terracotta实现基于Tomcat的Web应用集群 博客分类: 企业应用面临的问题 Java&Socket 开源组件的应用 tomcatweb session集群服务器负载均 ...

  6. Ubuntu下基于Nginx实现Tomcat集群负载均衡

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   Nginx是一款HTTP和反向代理服务器,有关它的介绍可以到网上搜一下,很多很多,不再累述.这里,我们记录一下Nginx ...

  7. 架构设计之Spring-Session分布式集群会话管理

    前言 通常在web开发中,回话管理是很重要的一部分,用于存储与用户相关的一些数据.对于JAVA开发者来说,项目中的session一般由Tomcat或者jetty容器来管理. 特点介绍 尽管使用特定的容 ...

  8. 架构设计之Spring-Session的分布式集群会话管理

    发表于 2017-04-24  |  160次围观   |   分类于 架构设计   |   暂无评论 前言 通常在web开发中,回话管理是很重要的一部分,用于存储与用户相关的一些数据.对于JAVA开 ...

  9. 【原创】Tomcat集群环境下对session进行外部缓存的方法(2)

    Session对象的持久化比较麻烦,虽然有序列化,但是并不确定Session对象中保存的其他信息是否可以序列化,这可能是网上很多解决方案摒弃此种做法的原因,网上的很多做法都是将Session中的att ...

随机推荐

  1. 四种Sandcastle方法生成c#.net帮助类帮助文档

    方法一 前端时间在网上收集和自己平时工作总结整理了<干货,比较全面的c#.net公共帮助类>,整理完成上传github之后我又想,既然是帮助类,总得有个帮助文档于是乎想到了Sandcast ...

  2. win10 uwp 绘图 Line 控件使用

    本文主要讲一个在绘图中,我们会有一个基础的控件,Line.控件的基本使用和他能做出的我们很多时候需要的界面. 虽然是一个简单控件,但是可以做出很诡异的很好看的UI. 首先,我们要知道,Line就是画直 ...

  3. 谈谈我对php通信的理解及人生小感

    故事背景: 小王和小甜是亲密无间的好朋友. 小王到自己QQ群里看到一个免单活动, 自己支付宝余额不足, 遂用小甜的手机淘宝先花150元购买了活动产品. 到货后商家告诉小王, 确认收货后提供旺旺账号.支 ...

  4. 423. Reconstruct Original Digits from English (leetcode)

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  5. sql语句中生成0-10随机数

    DECLARE @i int=0;DECLARE @j decimal(9,2);DECLARE @qnum INT=1000; SET NOCOUNT ONCREATE TABLE #temp_Ta ...

  6. C# AOP 面向切面编程之 调用拦截

    有时候我们需要在代码中对方法调用进行拦截,并修改参数和返回值,这种操作叫做AOP(面向切面编程) 不过需要注意的是,AOP的效率很慢,在需要高效率场合慎用. 以下是C#的AOP方法: 首先建立一个控制 ...

  7. PHP的Session机制

    客户端浏览器和服务器之间通信使用的http协议是一种无状态的协议,在它看来,客户端发起的每个请求都是独立.没有关联的.然而,在实际的Web应用开发中,服务器却经常需要根据用户以往的一些状态或数据对请求 ...

  8. scala攻略--简介

    在个人学习scala的过程中,产生了写一系列随笔的想法,这些随笔包括:翻译自官网.其他英文网站的文章以及自己的心得体会,本文章作为这个系列中的第一个. 由于本人能力所限,以及对scala还处于初级阶段 ...

  9. 腾讯云VS AWS :云存储网关性能谁更优?

    p { text-indent: 2em }    随着企业规模的扩大及业务的扩展,现有IT基础设施特别是存储设备无法满足爆炸性的数据增长,企业 IT 部门为了解决该问题,往往面临市场上多种存储产品及 ...

  10. Install a Redmine on Ubuntu system

    # How to install a Redmine on Ubuntu system Ref to: https://www.linode.com/docs/applications/project ...