对于一个业务系统的Tomcat集群来说,必须保证同一个用户访问到任一台服务器上都可以维持之前操作的身份。比如在服务器A进行了登陆,那么在服务器B中也要同步该用户已登录的状态,这里就用到了Session的同步。

同步方式

sticky模式、复制模式、Terracotta模式(非Tomcat自带)

sticky模式

把所有同一个session的请求,都发送到相同的节点,这样就避免了Session的问题

复制模式

所有的节点都保证同一个Session,有一点点的改变都会进行广播同步

实现方式:只要修改Tomcat的server.xml文件

修改Engine节点信息:

去掉 的注释符

web.xml中增加

Terracotta模式

该方法是利用开源软件Terracotta

Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta只把变化的部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。

比较

sticky模式,失去了负载均衡的意义,把同一个人的请求始终分配到同一个服务器处理。

复制模式,容易引起流量洪灾,每一次改变都要进行一次广播,对网络的影响很大。

Terracotta,比较适合的选择,但是需要第三方开源软件,配置比较繁琐。

Session同步实例——Terracotta

1、下载Terracotta

http://d2zwv9pap9ylyd.cloudfront.net/terracotta-3.7.7.tar.gz

2、安装

tar zxvf terracotta-3.4.1.tar.gz

mv terracotta-3.4.1 /usr/local/terracotta

3、配置Tomcat作为Terracotta客户端

复制terracotta-session-1.3.7.jar和terracotta-toolkit-1.1-runtime-5.7.0.jar到Tomcat/lib目录:CATALINA_HOME/lib

编辑 /var/lib/tomcat7/conf/context.xml文件

注意:className要根据Tomcat的版本进行修改。

4、配置Terracotta服务端

#拷贝配置文件例子

cp ./config-samples/tc-config-express-reference.xml ./tc-config.xml

#修改成自己的配置

vim ./tc-config.xml

注意:编辑的文件中注意修改:server和web-application

5、启动Terracotta

启动顺序:管理 => 子节点

#进入目录

cd /usr/local/terracotta

#复制tc-config.xml到bin目录

mv tc-config.xml ./bin/

#配置java环境变量

vi ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

source ~/.bashrc

(主服务器)运行Terracotta(注意加 & 丢到后台执行)

./start-tc-server.sh &

各个子节点,配置好context.xml后重启服务器

(各个子服务)重启Tomcat

service tomcat7 restart

6、关闭Terracotta

子节点关闭tomcat

管理节点执行 ./stop-tc-server.sh -n apache

java 分布式同步_Java Web分布式集群搭建(三)——Session同步相关推荐

  1. Web服务器集群搭建

    Web服务器集群搭建 1.需求分析 1.1.整体需求 搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实 ...

  2. Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建三(zookeeper篇)

    Zookeeper+Hadoop+Hbase+Hive+Kylin+Nginx集群搭建三(zookeeper篇) 四.Zookeeper集群搭建 1.下载安装zookeeper安装包 2.文件配置 3 ...

  3. etcd介绍:可作为KV数据库、服务发现、配置中心和分布式锁使用、etcd集群搭建

    etcd介绍 etcd用途 etcd VS zk etcd架构 etcd集群搭建

  4. 【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复

    文章目录 一. CouchBase概述 1.1.简述 1.2.CouchDB和CouchBase比对 1.2.1.CouchDB和CouchBase的相同之处 1.2.2.CouchDB和CouchB ...

  5. windows+mysql集群搭建-三分钟搞定集群

    一.集群了解 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一个库dang了,不会影响程序的运行.首先看了一些关于集群的资料,然后根据步骤一步步的整,遇到了一些问题,在这里把我遇到的问题以及解 ...

  6. P8实战(二):分布式锁前置技能 etcd 集群搭建

    etcd 集群环境搭建 13 什么是 etcd? etcd 是一个分布式高可用的 Key/Value 存储系统,旨在可靠.快速地保存和提供对关键数据的访问,主要用于分享配置和服务发现.它通过分布式锁定 ...

  7. 基于CentOS的分布式文件系统GlusterFS安装、集群搭建和运维

    一.准备工作 1.1 glusterfs的发展史 2011年10月04日,红帽收购Gluster. 2014年4月30日,红帽公司以1.75亿美元的价格将Ceph的企业级产品提供商Inktank收入囊 ...

  8. Hadoop集群搭建(三)

    Hadoop之JDK的安装 软件版本 ※ 选用JDK 8的131版本,软件包名jdk-8u131-linux- x64.tar.gz 1.卸载原有的JDK ★该项的所有操作步骤需要使用root用户进行 ...

  9. mysql redis集群 同步_redis集群和redis主从同步的区别

    很多人认为redis集群就是redis主从同步,其实redis集群跟redis主从同步的机制完全不一样. 1.redis集群包含主从同步:假如你配置了6个节点的redis-server做集群,那么使用 ...

最新文章

  1. 通过Excel生成批量SQL语句
  2. Python特殊语法:filter、map、reduce、lambda [转]
  3. 关于selenium的8种元素定位
  4. Unity自定义角色控制器(一):碰撞检测
  5. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
  6. [渝粤教育] 中国地质大学 材料力学 复习题 (2)
  7. wordpress 后台慢_建站经验-wordpress用户注册收不到验证邮件
  8. BZOJ2683 简单题(CDQ分治)
  9. Python 爬取 11 万 Java 程序员信息竟有这些重大发现!
  10. cxGrid使用笔记
  11. 32个Python爬虫项目含github链接
  12. 带通滤波器的设计概述
  13. Struts1 和 Struts2
  14. 利用Scanorama高效整合异质单细胞转录组
  15. java计算机毕业设计springboot基汽车租赁系统管理系统
  16. 【第1164期】从前端技术到体验科技
  17. 常识——server-u显示无法访问网页
  18. 传递函数化为状态空间表达式
  19. java double丢失精度问题,加减乘除计算出错出现99999
  20. 家里WiFi信号差的问题你碰到过吗?WiFi Mesh路由或许能够解决

热门文章

  1. angular中的href=unsafe:我该怎么摆脱你的溺爱!!
  2. 18款 非常实用 jquery幻灯片图片切换
  3. MS SQL 能否修改实例名称
  4. zabbix的rc控制脚本
  5. /etc/shadow 文件详解
  6. WindowsXP命令行修改服务启动选项
  7. 软件本地化 pdf_软件本地化与标准翻译
  8. 无法从套接字中获取更多数据_数据科学中应引起更多关注的一个组成部分
  9. 友元 java_C++ 友元关系详解
  10. 荷兰牛栏 荷兰售价_荷兰的公路货运是如何发展的