通过Terracotta实现基于Tomcat的Web应用集群
tomcat集群
用apache和tomcat搭建集群,实现负载均衡一、集群和负载均衡的概念(一)集群的概念集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力。
集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。
这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。
除了作为单一系统提供服务,集群系统还具有恢复服务器级故障的能力。
集群系统还可通过在集群中继续增加服务器的方式,从内部增加服务器的处理能力,并通过系统级的冗余提供固有的可靠性和可用性。
(二)集群的分类1、高性能计算科学集群:以解决复杂的科学计算问题为目的的IA集群系统。
是并行计算的基础,它可以不使用专门的由十至上万个独立处理器组成的并行超级计算机,而是采用通过高速连接来链接的一组1/2/4 CPU的IA服务器,并且在公共消息传递层上进行通信以运行并行应用程序。
这样的计算集群,其处理能力与真正超级并行机相等,并且具有优良的性价比。
2、负载均衡集群:负载均衡集群为企业需求提供更实用的系统。
该系统使各节点的负载流量可以在服务器集群中尽可能平均合理地分摊处理。
该负载需要均衡计算的应用程序处理端口负载或网络流量负载。
这样的系统非常适合于运行同一组应用程序的大量用户。
每个节点都可以处理一部分负载,并且可以在节点之间动态分配负载,以实现平衡。
对于网络流量也如此。
通常,网络服务器应用程序接受了大量入网流量,无法迅速处理,这就需要将流量发送给在其它节点。
负载均衡算法还可以根据每个节点不同的可用资源或网络的特殊环境来进行优化。
3、高可用性集群:为保证集群整体服务的高可用,考虑计算硬件和软件的容错性。
如果高可用性群集中的某个节点发生了故障,那么将由另外的节点代替它。
Tomcat部署Web应用方式总结
Tomcat部署Web应用方式总结在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署。
在下文中$CATALINA_HOME指的是Tomcat根目录。
一、静态部署静态部署指的是咱们在效劳器启动之前部署咱们的程序,只有当效劳器启动以后,咱们的Web应用程序才能访问。
以下3种方式都能够部署:(以PetWeb项目为例说明,PetWeb目录假设是F:/PetWeb)1.利用Tomcat自动部署将PetWeb目录拷贝到$CATALINA_HOME/webapps下,然后启动效劳器就能够够了,Tomcat启动时将自动加载应用。
访问地址如下:这种方式比较简单,可是web应用程序必需在webapps目录下。
Tomcat的Webapps目录是Tomcat默许的应用目录,当效劳器启动时,会加载所有那个目录下的应用。
2.修改文件部署这种方式能够没必要将PetWeb目录拷贝到webapps下,直接在F:/部署。
方式如下,更改$CATALINA_HOME/conf/文件,找到以下内容:Xml代码:1.<Context path ="/Pet"reloadable ="false"docBase ="F:/PetWeb"workDir="d:/Mywebapps/emp" />path:是访问时的根地址,表示访问的途径;如上述例子中,访问该应用程序地址如下:reloadable:表示能够在运行时在classes与lib文件夹下自动加载类包。
其中reloadable="false"表示当应用程序中的内容发生更改以后效劳器可不能自动加载,那个属性在开发时期通常都设为true,方便开发,在发布时期应该设置为false,提高应用程序的访问速度。
docbase:表示应用程序的途径,注意斜杠的方向“/”。
tomcat基本架构
tomcat基本架构Tomcat基本架构简介在现代互联网应用中,Tomcat(Apache Tomcat)被广泛使用作为Java Servlet 容器来运行和管理Java Web应用程序。
作为一个开源项目,Tomcat提供了一个可靠、高效的环境来部署和托管Java Web应用。
本文将深入介绍Tomcat 的基本架构,包括它的组成部分、工作原理和核心功能。
一、组成部分Tomcat基于Java技术实现,由多个组件构成,这些组件共同协作,以提供完整的Web服务器功能。
以下是Tomcat的主要组成部分:1. Catalina:Catalina是Tomcat的核心组件之一,负责管理和执行Servlet的生命周期。
它包含了一个Coyote容器用于处理HTTP请求,并通过调用适当的Servlet来生成HTTP响应。
2. Coyote:Coyote是Tomcat的通信组件,用于将HTTP请求转发给Catalina 容器进行处理。
它负责处理底层的网络通信,包括解析HTTP请求和生成HTTP 响应。
3. Jasper:Jasper是Tomcat的JSP引擎,用于将JSP文件编译成Java源文件,并最终生成对应的Servlet类。
它提供了JSP的运行时环境,使得Tomcat能够处理和执行JSP页面。
4. Cluster:Tomcat的Cluster组件用于实现集群部署,即可以将多个Tomcat 服务器连接在一起,共同处理和管理Web应用。
它提供了负载均衡和会话复制等功能,确保Web应用的高可用性和可扩展性。
5. Manager:Manager组件用于管理Tomcat中的Web应用。
它提供了一组Web界面,可以通过这些界面来管理和监控已部署的Web应用,包括启动、停止、重新部署等操作。
二、工作原理Tomcat的工作原理可以简单概括为以下几个步骤:1. 接受HTTP请求:当Tomcat服务器启动后,Coyote组件会监听指定的端口,等待客户端发起HTTP请求。
Tomcat集群与负载均衡
Tomcat集群与负载均衡(转载)在单一的服务器上执行WEB应用程序有一些重大的问题,当网站成功建成并开始接受大量请求时,单一服务器终究无法满足需要处理的负荷量,所以就有点显得有点力不从心了。
另外一个常见的问题是会产生单点故障,如果该服务器坏掉,那么网站就立刻无法运作了。
不论是因为要有较佳的扩充性还是容错能力,我们都会想在一台以上的服务器计算机上执行WEB应用程序。
所以,这时候我们就需要用到集群这一门技术了。
在进入集群系统架构探讨之前,先定义一些专门术语:1. 集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。
应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
2. 负载均衡(Load Balance):先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。
如一个提供Web服务的集群,对外界来看是一个大Web服务器。
不过集群的节点也可以单独提供服务。
3. 特点:在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。
集群系统(Cluster)主要解决下面几个问题:高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。
负载平衡:即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
目前比较常用的负载均衡技术主要有:1. 基于DNS的负载均衡通过DNS服务中的随机名字解析来实现负载均衡,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中一个地址。
Web Adaptor在Tomcat上的配置
Web Adaptor与Tomcat的配置易智瑞(中国)信息技术有限公司2015年2月版权声明本文档版权为ESRI中国(北京)有限公司所有。
未经本公司书面许可,任何单位和个人不得以任何形式摘抄、复制本文档的部分或全部,并以任何形式传播。
制定及修订记录目录Web Adaptor与Tomcat的配置 ........................................................................................................ Web Adaptor . (1)Web Adaptor的安装 (1)IIS的安装 (2)Tomcat上的配置 (2)安装 (2)Tomcat需求 (3)配置到Tomcat的过程 (3)设定GIS服务器URL和管理账户 (6)Web Adaptor当我们准备将 ArcGIS Server 站点暴露给外部用户的或者要实施负载均衡和安全技术的时候或者为我们的ArcGIS Server 站点保持一个静态的URL的时候该怎么办呢?为了解决这个问题,就需要Web Adaptor。
Web Adaptor的安装在ArcGIS Server 10.2.1的安装界面:标有红色框框的为Web Adaptor的安装内容。
从内容可以看出,他有两种,一种是部署在IIS上,另一种是部署在Java平台,现在最熟悉的Java平台的互联网容器就是Tomcat,也是本章讲解的重点。
IIS的安装在IIS的安装比较简单也不是重点,我就一笔带过:点击set up。
然后下一步,下一步。
随后就完成安装了。
打开IIS服务器,看到arcgisadaptor 的站点,然后说明配置成功,浏览这个站点就行了。
具体操作介绍可链接该网址:/arcgisserver_book/article/details/7783305反正最后可以看到的界面如下:在这里,不再说明IIS的配置过程。
web服务器集群配置
web服务器集群配置标题:Web服务器集群配置随着互联网的快速发展,网站访问量日益增加,单台服务器已经无法满足需求。
这时,我们可以考虑使用Web服务器集群配置来提高网站的可用性、性能和安全性。
本文将介绍Web服务器集群配置的基本概念和实现方法。
一、Web服务器集群的基本概念Web服务器集群是由多台服务器组成的系统,通过负载均衡技术将访问请求分配给各个服务器,从而提高网站的可用性和性能。
集群中的服务器可以位于不同的地理位置,也可以使用不同的操作系统和Web 服务器软件。
二、Web服务器集群的优点1、高可用性:当一台服务器出现故障时,其他服务器可以接管访问请求,保证网站的正常运行。
2、高性能:通过负载均衡技术,将访问请求分配给多个服务器处理,可以提高网站的性能。
3、扩展性:随着业务的发展,我们可以方便地增加服务器的数量,扩展集群的规模。
4、安全性:多个服务器可以更好地抵御网络攻击,提高网站的安全性。
三、Web服务器集群的配置方法1、选择合适的负载均衡器负载均衡器是Web服务器集群的核心设备,它负责将访问请求分配给各个服务器。
我们可以选择硬件负载均衡器(如F5 BIG-IP)或软件负载均衡器(如Nginx、HAProxy)来满足不同的需求。
在选择负载均衡器时,我们需要考虑其性能、高可用性、扩展性和安全性等方面。
2、配置服务器的Web服务器软件在集群中的每台服务器上,我们需要安装并配置Web服务器软件(如Apache、Nginx、IIS等)。
这些软件负责处理访问请求和生成动态网页内容。
在配置过程中,我们需要考虑如何优化服务器的性能、如何设置SSL证书以保护网站的安全性以及如何配置网站的文件系统和缓存等。
3、实现数据库的负载均衡除了Web服务器软件的配置外,我们还需要实现数据库的负载均衡。
这可以通过主从复制、读写分离、分片等技术来实现。
在实现过程中,我们需要考虑如何保证数据的一致性、如何提高数据库的性能以及如何实现故障转移等问题。
Tomcat集群及负载均衡配置
Tomcat集群及负载均衡配置在单一的服务器上执行Web应用程序有一些重大问题,当网站的请求量越来越大,单一服务器终究无法满足需要处理的负荷量,所以就显得有点力不从心;而且还存在的问题是会产生单点故障,如果该服务器宕掉,那么网站就无法运作。
不论是因为要有较佳的扩充性还是容错能力,我们都会想在一台以上的服务器上执行Web应用程序。
所以,这时候我们就需要用到集群这一门技术。
1术语介绍1.1 集群集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。
在客户端看来,一个集群就像是一个服务实体,但事实上集群由一组服务实体组成。
与单一服务实体相比较,集群提供了以下两个关键特性: 可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。
高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service 的警告。
在集群中,同样的服务可以由多个服务实体提供。
如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。
集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。
1.2 负载均衡负载的基础是集群,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同的硬件构成的计算机。
如一个提供Web 服务的集群,对外界看来是一个大Web服务器。
负载均即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
2常用负载均衡技术常用手负载均衡技术有以下几种HTTP重定向DNS负载均衡反向代理负载均衡IP负载均衡(NAT)直接路由IP隧道本文介绍的是第三种使用apahce+tomcat的反向代理的负载均衡,使用代理服务器可以将请求转发全内部的Web服务器,让代理服务器均匀地转发给多台内部web服务器之一上,从而达到负载均衡目的。
这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
tomcat作用
tomcat作用Tomcat是一个开源的Web服务器和Servlet容器,用于Java编写和运行。
它是Apache软件基金会的一个项目,是目前最流行的Java Web服务器之一。
Tomcat的主要作用是提供Java Servlet和JavaServer Pages(JSP)的运行环境,并且它也支持Java WebSocket、Java Expression Language(EL)和Java WebSocket API等规范。
首先,Tomcat的主要作用是作为Web服务器。
它能够接收HTTP请求并将静态资源,如HTML文件和图片,发送给客户端浏览器。
与其他Web服务器相比,Tomcat的性能较好,能够快速地响应大量的并发请求。
Tomcat还支持HTTPS协议,可以通过配置SSL证书来加密HTTP请求和响应。
其次,Tomcat作为Servlet容器,可以运行Java Servlet和JSP。
Servlet是基于Java的服务器端程序,能够处理客户端发送的HTTP请求,并生成响应。
通过Servlet的技术,可以实现动态网页、表单验证、数据库访问等功能。
JSP是一种将HTML和Java代码混合的技术,可以用于动态生成网页内容。
Tomcat能够解析和执行Servlet和JSP,从而实现Java Web应用的开发和运行。
此外,Tomcat还支持Java WebSocket技术。
WebSocket是HTML5提供的一种新的协议,能够在客户端和服务器之间建立持久性的全双工通信。
通过Java WebSocket API,开发者可以编写基于WebSocket的实时应用,如聊天室、实时游戏等。
Tomcat可以作为Java WebSocket服务器,与Java WebSocket客户端进行通信,并处理WebSocket的相关协议和事件。
另外,Tomcat还支持Java Expression Language(EL)。
在Tomcat中部署Web项目的操作方法(必看篇)
在Tomcat中部署Web项⽬的操作⽅法(必看篇)在这⾥介绍在Tomcat中部署web项⽬的三种⽅式:1.部署解包的webapp⽬录2.打包的war⽂件3.Manager Web应⽤程序⼀:部署解包的webapp⽬录将Web项⽬部署到Tomcat中的⽅法之⼀,是部署没有封装到WAR⽂件中的Web项⽬。
要使⽤这⼀⽅法部署未打包的webapp⽬录,只要把我们的项⽬(编译好的发布项⽬,⾮开发项⽬)放到Tomcat的webapps⽬录下就可以了。
如下图所⽰:这时,打开Tomcat服务器(确保服务器打开),就可以在浏览器访问我们的项⽬了,如下图所⽰:我们发现出现了404错误。
如果我们想通过上述连接可以正常访问我们的项⽬,我们可以编辑conf/server.xml进⾏配置。
打开server.xml⽂件,找到Host元素,默认配置如下:我们需要在Host内部增加Context的内容,增加之后如下:⼆:打包的war⽂件这种⽅式,只需把打包的war⽂件放在webapps⽬录下。
如下图所⽰:当我们启动Tomcat的时候,Tomcat要做的第⼀件事就是解包war⽂件的内容到相同⽂件名的路径中,取出.war扩展名,然后从解包的⽬录中读取项⽬⽂件。
现在,我们启动Tomcat,如下图所⽰:三:Manager Web⽅式Manager Web源应⽤程序可以让我们通过Web管理⾃⼰的Web项⽬。
当然,如果任何⼈都能管理其他⼈的项⽬,事情就变得有点棘⼿了,更别提安全防护了。
所以,在我们想通过Manager Web管理⾃⼰的项⽬时,需要进⾏权限设置。
⾸先访问Apache Tomcat欢迎页。
这个时候,我们点击图中圈中的部分,会提⽰我们输⼊⽤户名和密码。
所以我们需要在conf/tomcat- users.xml⽂件⾥添加⾓⾊。
tomcat- users.xml默认没有添加任何⾓⾊。
因为我们要通过Manager Web管理我们的项⽬,所以我们在⾥⾯添加manager-gui⾓⾊。
用Terracotta实现Master-Worker
用Terracotta实现Master-WorkerJava主题性能和扩展性,集群与缓存标签Terracotta,网格计算导言我们都知道分布式计算的理论知识:通过在多个计算机上分布任务、而不是由一个中央计算机发起所有的进程,我们就能提高整体的吞吐量。
问题是,在现实中真正实现这种设计是非常复杂的。
像EJB这样的技术应该能使其简单一些,但是它们已经被证明对设计和开发过程具有极度的侵入性。
幸运的是,目前出现并融入主流的JVM级别集群技术,比如Terracotta,提供了一个可行的替代方法。
最近Shine Technologies发布了使用Terracotta的一个应用,显著提高了性能。
过去,我们应用的性能往往受限于其运行的服务器。
使用Terracotta的话,这似乎不再是问题。
在我们的性能测试过程中,当一台服务器能力不足时,我们只要增加另一台服务器,应用的整体吞吐量就会显著增加——直到数据库成为主要限制因素。
一些背景Shine Technologies是一家为许多澳大利亚能源产业公司服务的IT咨询和开发服务提供商。
随着全面零售竞争(Full Retail Contestability,FRC)规定的实施,Shine已经为这些公司开发出许多产品。
简要地说,这些产品有利于促进批发商和零售商之间关于网络使用情况的财务交互。
这些交互是大批量的,大型零售商不得不处理每月数百万笔的交易。
因此,应用的伸缩能力变成了业务的关键——尤其是所有交易都在同一天涌向零售商的情况下。
这一系列产品最近添加的部分已形成一个应用,电力零售商的服务提供商使用该应用。
这个应用——也就是大家熟知的市场核对系统(Market Reconciliation System,MRS)——每周都接受大量的用电数据,还为零售商提供报告和核对机制,高亮显示他们期望的使用收费和实际收费之间的任何差异。
鉴于该产品的大数据量特性,伸缩性在应用架构中是一个很大的驱动因素。
部署高可用 Tomcat 集群
部署高可用 Tomcat 集群随着互联网应用的不断增多,单个服务器往往难以承受高并发访问的压力,因此采用集群的方式进行部署成为一种常见的解决方案。
Tomcat作为JAVA的应用服务器,也适用于集群的部署。
本文将介绍如何部署高可用Tomcat集群。
一、负载均衡器的选择在部署Tomcat集群之前,我们需要选择一款负载均衡器。
负载均衡器可以将客户端的请求分发到不同的服务器上,从而实现负载均衡。
目前比较常见的负载均衡器有Nginx、HAProxy和Apache等。
在选择负载均衡器时,需要考虑以下因素:1. 功能和性能:负载均衡器需要支持HTTP和HTTPS协议,并能够处理高并发请求。
2. 配置的难易程度:负载均衡器的配置文件需要考虑到性能和使用方便之间的平衡。
3. 社区支持和文档资料:负载均衡器的使用需要有足够的社区支持和文档资料。
综合考虑,我们选择Nginx作为负载均衡器。
二、Tomcat集群节点的设置在设置Tomcat集群节点之前,需要先确定采用的集群方式。
Tomcat集群可以采用共享存储方式或互相同步的方式。
共享存储方式:采用共享存储方式的Tomcat集群将共享同一份资源,包括代码、配置文件和缓存等。
当其中一个节点收到请求时,它将先查询本地缓存,如果不存在则从共享文件系统中读取数据。
互相同步的方式:采用互相同步的方式的Tomcat集群则每个节点都保留一份相同的资源,当其中一个节点更新相应的资源时,其他节点也会同步更新。
在本文中,我们将采用互相同步的方式。
为了实现互相同步,我们需要进行如下配置:1. 安装rsync在每个节点上都需要安装rsync,可以使用yum或apt-get等包管理器安装。
2. 创建Tomcat用户创建一个以Tomcat命名的用户,并赋予其Tomcat所在目录的读写执行权限。
3. 配置rsync在每个节点上都需要配置rsync,使其能够同步Tomcat的配置文件、程序文件和文件夹等。
分布式java集群技术-Terracotta
分布式java集群技术-Terracotta
Terracotta巧妙得隐藏了多个分布式JVM带来的复杂性,使得java对象能够透明得在多个JVM集群中进行分享和同步,并能够进行持久化。
从某种意义上讲它类似于hadoop中的zookeeper,可以作为zookeeper之外的另外一种选择。
Terracotta采用的是一种被称之为中心辐射的架构。
在这种架构里运行着分布式应用程序的JVM们在启动时都会与一台中心Terracotta服务器相连。
对于Terracotta更详细的讲解,尽在宝云java课程!
Terracotta服务器负责存储DSO对象数据,协调JVM之间的并发线程。
Terracotta库位于应用程序JVM中,在类加载过程中,它们用来对类的字节码进行增强,处理同步块内的lock和unlock请求,处理应用JVM之间的wait(),notify()请求,处理运行时和Terracotta 服务器的联系等等。
一种基于Terracotta的透明分布式CometD引擎实现
关键词 C me 分布式 o t T 3 P1 Jt T r ct e y er ot t a a 文献标 识码 A
中图分类 号
REALI ATI S ON T OF A ERRACo T TA- BAS ED RANS T PARENT DI TRI S BUTED Co M ET ENGI D NE
i t u t r r ,t e wa fb o d a t fe t h c lb l y o e r . h s a e n r d c s T ra ot tc n l g o i r v o t s f s ,f r e mo e h y o r a c s afc s t e s a a i t fs r es T i p p r ito u e e r c t e h oo y t mp o e C meD ’ r h i v a e it g dsrb t d s lto x si it u e ou in, t e a v n a e o ih s t a t c n ta s a e t mp e n o t ’ i r u e n e i h la s t n i h d a t g f wh c i h t i a r n p r nl i lme t C me D s d si td i d x wh c e d o y tb sg i c n l u t g d w h o k o d o e d v lp r . in f a t c t n o n t e w r l a ft e eo e i y i h s
Terrocotta - 基于JVM的Java应用集群解决方案
[置顶]Terrocotta - 基于JVM的Java应用集群解决方案分类:Terracotta Java集群2009-08-22 04:31 2638人阅读评论(5) 收藏举报前言越来越多的企业关键应用都必须采用集群技术,实现负载均衡(Load Balancing)、容错(Fault Tolerance)和灾难恢复(Failover)。
以达到系统可用性(High Availability)和可伸缩性(Scalability)的要求。
关于J2EE集群技术的基本原理和常用实现方式,有一篇经典的文章:/tt/articles/article.tss?l=J2EEClusteringCSDN上,陶建风先生在他的博客中也作了翻译:/ESoftWind/archive/2006/10/19/1341089.aspx这篇文章虽然发表于2005年,但它对集群技术的概念、原理和实现的基本描述至今依然适用。
刚刚接触集群技术的朋友不妨阅读一下这篇文章,以便掌握集群技术的基本知识。
我写这篇文章是想介绍一个新的Java集群技术,Terracotta。
它采用了与众不同的手段,解决了传统集群技术面临的一些关键问题。
可以说为Java集群技术的实现吹来了一股新鲜的空气。
Terracotta(/)是一个开源的框架。
他的创始人Ari Zilka原本是的首席架构师。
他于2003年成立Terracotta公司,并且将产品开源。
该产品在2006年左右趋于成熟,在很多财富500强企业获得成功应用。
2009年Terracotta在该年度的JavaOne会议中获得Duke奖,并由Java创始人James Gosling先生亲自把该奖颁发给了Ari Zilka先生。
本文着重介绍Terracotta技术的基本原理,尤其是它与其它集群技术的根本区别之处。
然后会用一个简单的例子说明Terracotta的基本使用方式。
在以后的文章里,我会陆续详细介绍Terrocotta的不同应用场景和技巧。
terracotta和jetty7.5集群实现session共享
terracotta和jetty7.5集群实现session共享近段时间一直在做jetty集群的session共享,刚开始想使用memcache,跟同事讨论之后决定采用性能更好的terracotta,但谁也没有做过,且中文文档少得可怜,且仅有的几个中文文档都是关于jetty6.1.5和terracotta的,而jetty7和jetty6差别蛮大的,但其实配置差不多的,接连配置下来,还是遇到好些问题。
架构:LVS+Jetty7.5+terracotta+nagios+mysql集群来进行的,体系结构就不多说了,网上很多的,本文就在于Jetty7.5+terracotta 部分。
terracotta分为server端和client端,具体的可以看官方文档的体系结构介绍:server端:运行terracotta软件client端:和webapp一起运行在应用服务器上,也就是和jetty7容器一起运行准备工作:下载terracotta3.7server端安装:在其中一台服务器(我这里使用的centos5.5)上操作:1、解压tar包到/usr/loca/terracotta下(这个目录是我事先建立好的)。
2、进入该目录下:(这个目录官方文档上叫做‘<terracotta>’)cd /usr/local/terracotta/terracotta-3.7.0/3、修改该目录下的config-samples目录下的tc-config.xml文件(默认没有这个文件,只有一个包含全部配置项目的sample文件,将该文件复制后修改为这个名字就可以了)(具体这个文件中的配置是什么意思请看我博客中的另外一篇,详细讲述了配置项的功能和含义):<?xml version="1.0" encoding="UTF-8" ?><tc:tc-config xmlns:tc="config"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="schema/terracotta-6.xsd"><tc-properties><property name="l2.nha.dirtydb.autoDelete" value="true"/> <property name="l1.cachemanager.enabled" value="true"/> <property name="logging.maxLogFileSize" value="1024"/> </tc-properties><system><configuration-model>development</configuration-model></system><servers><server host="terracotta" name="my_server" bind="192.16 8.0.182"><data>/opt/terracotta/server-data</data><logs>/opt/terracotta/server-logs</logs></server></servers><clients><logs>logs-%i</logs></clients></tc:tc-config>注意server的host属性,可以直接配置为IP,如果配置为其他名称,比如terracotta,则在客户端的/etc/hosts文件中要配置解析对象:192.168.0.182 terracotta 才行,要不然会报无法解析域名的错误。
使用Terracotta搭建SmartFoxServer集群
使用Terracotta搭建SmartFoxServer集群Document Created by: Roch翻译xingdepeng@目录1. 准备硬件2. 准备操作系统3. 准备软件4. 软件配置5. 启动集群6. 监视服务7. 常见问题(FAQ)第1步——准备硬件为了构建一个基本级别的充分冗余SmartFoxServer集群,我们需要至少4台服务器和1个负载平衡服务器(数据库可选)。
Terracotta安装在两台以“PASSIVE/ACTIVE”模式运行的服务器上,Smartfox服务器也安装在2台服务器上。
负载平衡服务器是用来在SFS(Smartfox服务器) #1 and SFS #2之间分发请求连接的。
参见图1:图1注意:上图中的SQL server数据库虽然是可选的,但是为了使用户的好友列表(buddy list)变量和其他变量在两台SFS之间共享访问,我们的例子中会使用它。
同样,负载均衡服务器用来在两台SFS之间分发每个新连接请求。
本白皮书将略过负载平衡服务器的安装,因为使用任何软件或硬件方案搭建的负载均衡服务器都可以完全胜任。
默认情况下,为了建立socket连接,负载均衡服务器需要为SmartFox的9339和8080端口发送连接。
第2步——准备操作系统在这一步使用的CentOS version 5操作系统,其他版本的Linux也可以。
由于是关于Linux操作系统的安装配置,本节略过。
第3步——准备软件这一步讲了把一个包括SmartFoxServer,Terracotta和JRE的压缩包解压缩到Linux的目录。
第4步——软件配置现在我们开始做些有点技巧的事情。
每个服务器都需要正确配置才能一起配合良好的运行。
本步骤将分为两部分:配置Terracotta和配置Smartfox Server,我们从配置Terracotta开始。
配置Terracotta如前所述,我们将把TC(Terracotta) 安装配置成'ACTIVE/PASSIVE'模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文介绍如何配置Tomcat和Terracotta服务器将普通的Web应用部署到集群中,实现跨Tomcat节点的session复制,以达到负载均衡、提高系统吞吐量和灾难恢复的效果。
基本原理简介一般利用Tomcat搭建Web应用集群有如下几种方法:1、利用负载均衡器的粘session的方式把所有同一session的请求都发送到相同的Tomcat节点。
这样不同用户的请求就被平均分配到集群中各个tomcat节点上,实现负载均衡的能力。
这样做的缺点是没有灾难恢复的能力。
一旦一个节点发生故障,这个节点上所有的session信息全部丢失;2、利用Tomcat session复制的机制使得所有session在所有Tomcat节点中保持一致。
当一个节点修改一个session数据的时候,该节点会把这个session的所有内容序列化,然后广播给所有其它节点。
这样当下一个用户请求被负载均衡器分配到另外一个节点的时候,那个节点上有完备的session信息可以用来服务该请求。
这种做法的问题是对session哪怕有一点点修改,也要把整个sessions数据全部序列化(serialize),还要广播给集群中所有节点,不管该节点到底需不需要这个session。
这样很容易会造成大量的网络通信,导致网络阻塞。
一般采用这种方式,当Tomcat节点超过4个时候,整个集群的吞吐量就不能再上升了;3、第三种方式是通过cookie保存用户信息的一个或几个关键字,每一个http请求到达web应用的时候,web程序拿这个关键字到数据库中读取相关的数据,然后对其进行处理。
也就是说把session数据保存到了数据库中。
这样以来在内存中的session就完全不需要了。
这样做的缺点就是加大了数据库的负载,使得数据库变成了集群的瓶颈。
而通过构造数据库集群提高负载能力往往需要高额的成本。
Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta只把变化的部分发送给Terracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。
这样对网络的压力就非常小,各个节点也不必浪费CPU时间和内存进行大量的序列化操作。
把这种集群间数据共享的机制应用在session同步上,相当于对tomcat第二种集群实现机制进行了优化,既避免了对数据库的依赖,又能达到负载均衡和灾难恢复的效果。
在对比测试中,采用Terracotta搭建Tomcat集群,节点达到8个时候,整个集群的吞吐量还一直是线性增长的。
为了方便使用Terracotta搭建Tomcat集群,Terracotta提供了专门的插件tim-tomcat。
下面将对集群的搭建进行详细描述。
准备工作首先需要下载如下软件:Apache Tomcat目前Terracotta官方支持的Tomcat版本为:Apache TomcatApache TomcatApache TomcatTerracotta 或更高版本安装过程在所有机器上安装Java请参考目前支持的软硬件平台在所有机器上安装Terracotta选一台机器作为Terracotta服务器在所有运行Tomcat的机器上也安装Terracotta,他们将称为Terracotta客户端在应用服务器节点上安装Tomcat把要部署的Web应用部署在所有Tomcat上配置过程下载附件中的文件,保存到${TERRACOTTA_HOME}/(Unix上)或者${TERRACOTTA_HOME}\(Windows上)。
修改web-applications和web-application部分,把要共享session的应用的contex配置上:<web-applications><web-application>my_web_app1</web-application><web-application>my_web_app2</web-application></web-applications>您可能还需要修改Terracotta服务器的信息。
比如:<server host=""> <!-- IP or host name of TC server--><dso-port>9510</dso-port></server>把配制好的文件拷贝到所有机器上。
然后在每一台机器上,进入TERRACOTTA_HOME目录,运行:UNIX/LINUXbin/ upgrade<Windowsbin\ upgrade配置Tomcat应用服务器在Tomcat安装目录的bin子目录中创建(Unix)或(Windows)文件。
其内容为:UNIX/LINUXTC_INSTALL_DIR=<本地Terracotta安装目录>TC_CONFIG_PATH=<本地的完整文件名>. $TC_INSTALL_DIR/bin/ -qexport JAVA_OPTS="$JAVA_OPTS $TC_JAVA_OPTS".Windowsset TC_INSTALL_DIR=<本地Terracotta安装目录>set TC_CONFIG_PATH=<本地的完整文件名>call %TC_INSTALL_DIR%\bin\ -qset JAVA_OPTS=%JAVA_OPTS% %TC_JAVA_OPTS%启动集群在Terracotta服务器上的Terracotta安装目录执行如下命令:UNIX/LINUXbin/ &Windowsbin\在每一台Web应用服务器上的Tomcat安装目录的bin子目录下执行:UNIX/LINUX./Windows等Tomcat启动以后,查看Tomcat日志文件,确认Terrocotta已经启动。
比如在Mac环境中,使用Terracotta ,看到的日志将包括如下内容:2009-07-17 10:57:39,425 INFO - Terracotta as of -130552 (Revision 12704 by cruise@su10mo5 from 2009-07-17 10:57:39,828 INFO - Configuration loaded from the file at '/Users/lma/'.2009-07-17 10:57:39,975 INFO - Log file: '/Users/lma/apps/'.2009-07-17 10:57:42,312 INFO - Connection successfully established to server at如果能看到上述信息,说明Terracotta和Tomcat都正常启动,并且已经与Terracotta服务器成功建立了连接。
验证Session集群集群启动后,我们可以利用Tomcat内置的Web应用examples来验证集群是否成功配置好。
比如有两台Tomcat服务器分别为和。
首先启动(Unix)或(Windows),连接到Terracotta服务器上。
您可以看到所有Tomcat节点都显示在Connected Clients中。
另外在Object Browser中可以看到一个共享数据:tc:session_localhost/examples说明所有session已经被共享到Terracotta服务器上了。
下面把浏览器指向:,把如下配置添加到<application><dso>中:<instrumented-classes><include><class-expression>cal.*</class-expression></include></instrumented-classes>重新启动Tomcat。
再打开前面的页面。
您可能还会遇见TCNonPortableObjectError,不过这次的错误是有关boot jar的:to share an instance of a non-portable class referenced by a portable class. This unshareable class must be in the DSO boot jar. It also has superclasses which must be in the DSO boot jar. Please add all of these classes to the boot jar configuration and re-create the DSO boot jar.只要认真阅读错误信息,按照提示的方法配置文件,然后执行下面的命令重新生成boot jar文件,再重新启动Tomcat就可以了:$TERRACOTTA_HOME/bin/ -f $TOMCAT_HOME/处理完上述问题后,例子程序中会显示一个日历管理系统。
您可以在里面配置一天的工作日程。
在第一台Tomcat服务器上配置好一天的日程,然后到第二台服务器上,打开相同的页面,您会看到前面输入的日程已经显示出来了。
您还可以试着在第二台服务器上对日程进行修改,再到第一台上面刷新页面,前面的修改也会立即显示出来。
这说明两台Tomcat服务器的session信息已经完全同步了。
错误处理1. 如果启动失败,有可能是JAVA_OPTS没有配置好。
可以尝试在startupTC文件中,在set JAVA_OPTS后面打印出JAVA_OPTS的内容。
应该看到类似下面的内容:-Xmx512m -Xms512M -Xbootclasspath/p:/Users/lma/terracotta/ =/Users/lma/terracotta/ =/Users/lma/2. 如果遇见TCNonPortableObjectException异常,说明在Session中共享的类没有包含在的instrumented-classes配置中。
一般在异常新吸力面Terracotta会包含需要添加到配置文件中的信息,比如:<instrumented-classes><include><class-expression></class-expression></include><instrumented-classes></instrumented-classes>只要按照提示把配置信息放到文件中,然会从新启动Tomcat即可。