Terracotta

学习文档

  


目 录

1.    引言...................................................................................................................................... 3

2.    基本原理简介........................................................................................................................ 3

3.    Tomcat搭建Web应用集群...................................................................................................... 3

4.    用Terracotta 2.7.3+Tomcat6.1搭建集群................................................................................... 4

1.  引言

本学习文档主要介绍了Terracotta基本原理和如何配置Tomcat和Terracotta服务器将普通的Web应用部署到集群中,实现跨Tomcat节点的session复制,以达到负载均衡、提高系统吞吐量和灾难恢复的效果。

2.  基本原理简介

Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta只把变化的部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。这样对网络的压力就非常小,各个节点也不必浪费CPU时间和内存进行大量的序列化操作。把这种集群间数据共享的机制应用在session同步上,相当于对tomcat第二种集群实现机制进行了优化,既避免了对数据库的依赖,又能达到负载均衡和灾难恢复的效果。在对比测试中,采用Terracotta搭建Tomcat集群,节点达到8个时候,整个集群的吞吐量还一直是线性增长的。

3.  Tomcat搭建Web应用集群

一般利用Tomcat搭建Web应用集群有如下三种方法:
利用负载均衡器的粘session的方式把所有同一session的请求都发送到相同的Tomcat节点。这样不同用户的请求就被平均分配到集群中各个tomcat节点上,实现负载均衡的能力。这样做的缺点是没有灾难恢复的能力。一旦一个节点发生故障,这个节点上所有的session信息全部丢失;
利用Tomcat session复制的机制使得所有session在所有Tomcat节点中保持一致。当一个节点修改一个session数据的时候,该节点会把这个 session的所有内容序列化,然后广播给所有其它节点。这样当下一个用户请求被负载均衡器分配到另外一个节点的时候,那个节点上有完备的 session信息可以用来服务该请求。这种做法的问题是对session哪怕有一点点修改,也要把整个sessions数据全部序列化(serialize),还要广播给集群中所有节点,不管该节点到底需不需要这个session。这样很容易会造成大量的网络通信,导致网络阻塞。一般采用这种方式,当Tomcat节点超过4个时候,整个集群的吞吐量就不能再上升了;
第三种方式是通过cookie保存用户信息的一个或几个关键字,每一个http请求到达web应用的时候,web程序拿这个关键字到数据库中读取相关的数据,然后对其进行处理。也就是说把session数据保存到了数据库中。这样以来在内存中的session就完全不需要了。这样做的缺点就是加大了数据库的负载,使得数据库变成了集群的瓶颈。而通过构造数据库集群提高负载能力往往需要高额的成本。

为了方便使用Terracotta搭建Tomcat集群,Terracotta提供了专门的插件tim-tomcat。下面将对集群的搭建进行详细描述。

4.  用Terracotta 2.7.3+Tomcat6.1搭建集群

下面我用两台局域网连接的计算机来搭建Tomcat集群环境,

我先介绍下我的环境: 我共用了2台pc,使用的是windowsXP环境,分别是:
pc1  ip:192.168.12.187  host name:guifangjun
pc2  ip:192.168.26.55  host name:itsm-dep

搭建具体步骤如下:

1)     准备工作

首先在每台机子安装以下软件,并设置系统环境变量:

* jdk1.6.0_ 13
* Apache Tomcat 6.1

* Terracotta 2.7.3

2)     tc-config.xml配置

说明:TERRACOTTA_HOME指terracotta在本机的安装地址(本例的安装是地址是:D:\ Terracotta\terracotta-2.7.3)

首先,打开%TERRACOTTA_HOME%\samples\tc-config.xml 这个文件。修改<servers>和</servers>中间这部分代码如下:

<servers>

<server host="192.168.26.55" name="itsm-dep">          //定义pc1的host地址

  <data>terracotta/demo-server/server-data</data>

  <logs>terracotta/demo-server/server-logs</logs>

  <statistics>terracotta/demo-server/server-statistics</statistics>

- <!--

  <l2-group-port>9530</l2-group-port>             //设置服务端口号,默认9520

  -->

  </server>

<server host="192.168.12.187" name="guifangjun">   //定义pc2的host地址

  <data>data/server-data</data>

  <logs>logs/server-logs</logs>

<!--

  <l2-group-port>9530</l2-group-port>   

  -->

  </server>

<ha>

  <mode>networked-active-passive</mode>     //设置active-passive模式为

<networked-active-passive>

  <election-time>5</election-time>

  </networked-active-passive>

</ha>

<update-check>

  <enabled>true</enabled>

  </update-check>

  </servers>

我只列出了 servers 这个节点。你需要在两台机子上都修改。你可在%TERRACOTTA_HOME%\samples\这个目录下看到有个start-demo-server.bat bat文件。这个就是我们用来启动terracotta server的脚本。启动时他会调用我们修改的tc-config.xml这个文件。

然后,我们修改%TERRACOTTA_HOME%\tools\sessions\configurator-sandbox\tomcat6.0\tc- config.xml这个文件,其实跟上面的修改是一样的,,都是把servers 节点修改成和上一步一样。

3)     配置Tomcat应用服务器

%Tomcat_HOME%\bin目录下,创建一个startupTC.bat启动文件,文件内容如下:

//Terracotta安装路径

set TC_INSTALL_DIR=D:\Terracotta\terracotta-2.7.3

//tc-config.xml配制文件路径

set TC_CONFIG_PATH=D:\Terracotta\terracotta-2.7.3\samples\tc-config.xml

call %TC_INSTALL_DIR%\bin\dso-env.bat -q

set JAVA_OPTS=%JAVA_OPTS% %TC_JAVA_OPTS%

startup.bat

4)     所有配置完成,试运行

首先,在两台主机上分别执行%TERRACOTTA_HOME%\samples\start-demo-server.bat启动文件。

接着,分别执行%TOMCAT_HOME%\bin\startupTC.bat启动文件。

如果启动文件不报错,那就说明Terracotta服务器启动成功。

5)     测试failover和failback

首先在分别在两台机子上打开Administrator Console,路径是开始--》程序--》Terracotta2.4.3--》Administrator Console。打开之后你会开到如下图所示的界面:

最后我们测试下terrcatta server 的failover和failback:

首先停掉一个terrcatta服务,我们会看到下图:

红色应该表示itsm-dep这台机子上的terracotta server已经down掉了。而且2个tomcat都已经连到guifangjun这个server上了,他也变成active了(绿色)。表明 测试成功。

Terracotta学习文档相关推荐

  1. FreeMarker中文帮助手册API文档,基础入门学习文档

    FreeMarker中文帮助手册API文档,基础入门学习文档 分类: 编程技术 发布: bywei 浏览: 7 日期: 2011年5月28日 分享到: QQ空间 新浪微博 腾讯微博 人人网 什么是Fr ...

  2. ffmpeg的中文学习文档

    ffmpeg的中文学习文档 文章目录: 一.ffmpeg介绍 二.学习参考文档 1.中文 一.ffmpeg介绍 ffmpeg是视频处理工具,可选参数非常多,功能也非常的强大,可以用来开发各种视频处理工 ...

  3. Ext JS 6学习文档-第3章-基础组件

    Ext JS 6学习文档-第3章-基础组件 基础组件 在本章中,你将学习到一些 Ext JS 基础组件的使用.同时我们会结合所学创建一个小项目.这一章我们将学习以下知识点: 熟悉基本的组件 – 按钮, ...

  4. Ext JS 6学习文档-第6章-高级组件

    Ext JS 6学习文档-第6章-高级组件 高级组件 本章涵盖了高级组件,比如 tree 和 data view.它将为读者呈现一个示例项目为 图片浏览器,它使用 tree 和 data view 组 ...

  5. NodeJS-001-Nodejs学习文档整理(转-出自http://www.cnblogs.com/xucheng)

    Nodejs学习文档整理 http://www.cnblogs.com/xucheng/p/3988835.html 1.nodejs是什么: nodejs是一个是javascript能在后台运行的平 ...

  6. java学习文档_阿里技术专家带你玩转JVM,从底层源码到项目实战,都在这份文档里...

    作为 Java 的从业者,在找工作的时候,一定会被问及关于 JVM 相关的知识. JVM 知识的掌握程度,在很多面试官眼里是候选人技术深度的一个重要评判标准.而大多数人可能没有对 JVM 的实际开发和 ...

  7. [扩展阅读] EasyGUI 学习文档【超详细中文版】

    [扩展阅读] EasyGUI 学习文档[超详细中文版] 0. 安装 EasyGUI 官网:https://github.com/robertlugg/easygui python查看内置的所有模块 h ...

  8. C和C++编程和学习文档

     C和C++编程和学习文档 C和C++编程和学习文档   1 :指针变量名称以p为首字符,这是程序员通常在定义指针时的一个习惯 2 :har * p;    (int *)p 把p强制转换为int型  ...

  9. PHP学习文档——基础篇

    PHP学习文档--基础篇 PHP学习文档--基础篇 标记 短标记 脚本标记 标准标记(常用) PHP注释 行注释 块注释 PHP语句分隔符 变量 变量命名规则 预定义变量 可变变量 变量传值 常量 定 ...

最新文章

  1. exsi5.5安装过程中遇到的一个问题
  2. 坑 之 使用numpy的tofile和fromfile读取数据
  3. java编写科赫曲线_matlab绘制peano(皮亚诺)曲线和koch(科赫曲线,雪花曲线)分形曲线...
  4. 这回真要涨工资了!国务院教育督导办:2020年把义务教育教师平均工资收入水平不低于当地公务员作为督导检查重点...
  5. u3d_shader_surface_shader_1
  6. mysql 电商实战_电商项目测试实战(一)
  7. java 隐藏任务栏,在Java中隐藏Windows任务栏?
  8. JSP实现点击链接后下载文件(相当于右键另存)功能
  9. Mask rcnn介绍
  10. js获取ip本机地址的方法
  11. 【MM32F5270开发板试用】+RFID门禁
  12. ios中的导航栏的隐藏方式
  13. 2019杭电多校Problem 5 Snowy Smile题解
  14. linux cp dd 不同文件系统,根文件系统的制作
  15. 白泽六足机器人导航贴(开源)
  16. DataCastle[职位预测竞赛]冠军——我们都爱苍老师
  17. Linux的企鹅图标
  18. matlab小数分数互换
  19. PTA - 数据库合集22
  20. 利用requests库抓取猫眼电影排行

热门文章

  1. IaaS、PaaS、SaaS、DaaS——各种云服务模式一览
  2. linux /etc/security/login.cfg,AIX用户管理
  3. log4cpp 的使用
  4. 微信怎么关闭wifi定位服务器,WiFi定位到底怎么做的,看完这个你就知道了
  5. stream流 lambda 练习
  6. quickBI嵌入自研系统
  7. 什么是NAT模式、路由模式
  8. 数据处理与可视化软件Tableau、Qlikview、Power BI 全方位比较
  9. MyBatis学习笔记(六)——高级查询之一对多映射
  10. 学习计算机网络必看的书