通过Terracotta实现基于Tomcat的Web应用集群Word文件下载.docx
《通过Terracotta实现基于Tomcat的Web应用集群Word文件下载.docx》由会员分享,可在线阅读,更多相关《通过Terracotta实现基于Tomcat的Web应用集群Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。
目前Terracotta官方支持的Tomcat版本为:
Terracotta或更高版本
安装过程
在所有机器上安装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>
my_web_app2<
/web-applications>
您可能还需要修改Terracotta服务器的信息。
比如:
serverhost="
"
>
!
--IPorhostnameofTCserver-->
dso-port>
9510<
/dso-port>
/server>
把配制好的文件拷贝到所有机器上。
然后在每一台机器上,进入TERRACOTTA_HOME目录,运行:
UNIX/LINUX
bin/upgrade
Windows
bin\upgrade
配置Tomcat应用服务器
在Tomcat安装目录的bin子目录中创建(Unix)或(Windows)文件。
其内容为:
TC_INSTALL_DIR=<
本地Terracotta安装目录>
TC_CONFIG_PATH=<
本地的完整文件名>
.$TC_INSTALL_DIR/bin/-q
exportJAVA_OPTS="
$JAVA_OPTS$TC_JAVA_OPTS"
.
setTC_INSTALL_DIR=<
setTC_CONFIG_PATH=<
call%TC_INSTALL_DIR%\bin\-q
setJAVA_OPTS=%JAVA_OPTS%%TC_JAVA_OPTS%
启动集群
在Terracotta服务器上的Terracotta安装目录执行如下命令:
bin/&
bin\
在每一台Web应用服务器上的Tomcat安装目录的bin子目录下执行:
./
等Tomcat启动以后,查看Tomcat日志文件,确认Terrocotta已经启动。
比如在Mac环境中,使用Terracotta,看到的日志将包括如下内容:
2009-07-1710:
57:
39,425INFO-Terracottaasof-130552(Revision12704bycruise@su10mo5from
39,828INFO-Configurationloadedfromthefileat'
/Users/lma/'
.
39,975INFO-Logfile:
'
/Users/lma/apps/'
42,312INFO-Connectionsuccessfullyestablishedtoserverat
如果能看到上述信息,说明Terracotta和Tomcat都正常启动,并且已经与Terracotta服务器成功建立了连接。
验证Session集群
集群启动后,我们可以利用Tomcat内置的Web应用examples来验证集群是否成功配置好。
比如有两台Tomcat服务器分别为和。
首先启动(Unix)或(Windows),连接到Terracotta服务器上。
您可以看到所有Tomcat节点都显示在ConnectedClients中。
另外在ObjectBrowser中可以看到一个共享数据:
tc:
session_localhost/examples
说明所有session已经被共享到Terracotta服务器上了。
下面把浏览器指向:
,把如下配置添加到<
application>
dso>
中:
instrumented-classes>
include>
class-expression>
cal.*<
/class-expression>
/include>
/instrumented-classes>
重新启动Tomcat。
再打开前面的页面。
您可能还会遇见TCNonPortableObjectError,不过这次的错误是有关bootjar的:
toshareaninstanceofanon-portableclassreferencedbyaportableclass.ThisunshareableclassmustbeintheDSObootjar.ItalsohassuperclasseswhichmustbeintheDSObootjar.Pleaseaddalloftheseclassestothebootjarconfigurationandre-createtheDSObootjar.
只要认真阅读错误信息,按照提示的方法配置文件,然后执行下面的命令重新生成bootjar文件,再重新启动Tomcat就可以了:
$TERRACOTTA_HOME/bin/-f$TOMCAT_HOME/
处理完上述问题后,例子程序中会显示一个日历管理系统。
您可以在里面配置一天的工作日程。
在第一台Tomcat服务器上配置好一天的日程,然后到第二台服务器上,打开相同的页面,您会看到前面输入的日程已经显示出来了。
您还可以试着在第二台服务器上对日程进行修改,再到第一台上面刷新页面,前面的修改也会立即显示出来。
这说明两台Tomcat服务器的session信息已经完全同步了。
错误处理
1.如果启动失败,有可能是JAVA_OPTS没有配置好。
可以尝试在startupTC文件中,在setJAVA_OPTS后面打印出JAVA_OPTS的内容。
应该看到类似下面的内容:
-Xmx512m-Xms512M-Xbootclasspath/p:
/Users/lma/terracotta/=/Users/lma/terracotta/=/Users/lma/
2.如果遇见TCNonPortableObjectException异常,说明在Session中共享的类没有包含在的instrumented-classes配置中。
一般在异常新吸力面Terracotta会包含需要添加到配置文件中的信息,比如:
只要按照提示把配置信息放到文件中,然会从新启动Tomcat即可。
附件-
tc-configxmlns:
tc="
xmlns:
xsi="
xsi:
schemaLocation="
servers>
--FormoreinformationonworkingwiththeTerracottaconfigurationfile,includinghowtoadd
moreservers,see
Editthefollowingserverelementsothatitshostattributecontainsthevaluematchingthe
hostnamefortheTerracottaserver.-->
localhost"
update-check>
enabled>
true<
/enabled>
/update-check>
/servers>
--CheckthattheTIMshowninthe<
module>
element'
snameattributematchestheTomcatversionyou
areusing.TheTIMlistedhere,"
isforTomcat.Forexample,ifyouareusing
Tomcat,editthenameto"
.-->
clients>
modules>
modulename="
version="
/>
/modules>
/clients>
--Using<
elements,enterthecontextrootofthewebapplicationbeingclustered.
Ifyouareclusteringmorethanonewebapplication,useone<
elementperapplication.
Twoexample<
elementsareshownbelow.Editorremovetheseelementsasneeded.
Tosetthevalueofthe<
elementtothedefaultweb-applicationcontext,usethe
specialvalue"
ROOT"
(withoutquotationmarks).-->
examples<
/dso>
/application>
/tc:
tc-config>
本文来自CSDN博客,转载请标明出处:
另一篇文章,
Terracotta是一款由美国Terracotta公司开发的著名开源Java集群平台。
它在JVM与Java应用之间实现了一个专门处理集群功能的抽象层,以其特有的增量检测、智能定向传送、分布式协作、服务器镜像、分片等技术,允许用户在不改变现有系统代码的情况下实现单机Java应用向集群话应用的无缝迁移。
使得用户可以专注于商业逻辑的开发,由Terracotta负责实现高性能、高可用性、高稳定性的企业级Java集群.Terracotta公司在2009年收购了著名的Java开源缓存项目Ehcache以及Java任务调度项目Quartz。
经过对该项目的深度整合,Terracotta推出了易用性更高的分布式缓存、分布式任务调度以及分布式WebSession等快捷解决方案.以上引自老马的文章,具体可参看作者文章了解。
配置环境:
我的配置环境是:
winxp,—17,,,,terracotta版本是,目前最新版本是,可在下载。
实战:
首先需要说明的是terracotta分为expressmode(快捷模式)和客户化模式,expressmode能够让大家快速上手,不需要复杂的配置就可运行起来,而客户化模式则有很多高级功能,而且需要配置相应的文件,初学可以先运行expressmode作为学习。
首先以expressmode模式为例说明
1.首先下载terracotta。
jar,前提是机器已经安装jdk及配置好了java_home,利用java-jarterracotta。
jar命令安装terracotta,安装时最好保持jdk及terracotta安装目录名称都没有空格。
2.首先集成session复制,将terracotta安装目录下的sessions文件夹下的拷贝到\server\lib文件夹下,然后
将文件(此文件可参见安装目录下的sessions\conf-samples的例子文件)拷贝到我们自己项目的META-INF文件夹下,具体内容根据使用的不同中间件进行不同配置,一下是使用的配置,其他的也可看光放文档说明
例如:
Context>
ValveclassName="
tcConfigUrl="
localhost:
9510"
/>
/Context>
--tomcat-->
将我们的web工程发布到webapps下,启动bin/下的即可,然后到TerracottaConsole控制台查看objectbrower下是否出现tc:
session。
也可运行terracotta自带的例子,位于安装目录下的sessions\samples\下,验证时客气起双tomcat分配不同的端口号,打开两个浏览器窗口进行验证。
客户化模式的session复制可参见老马博客文章。
2.集成hibernate二级缓存
集成的时候需要注意将将安装后的terracotta文件夹下的、、、等文件拷贝到项目的lib文件夹下,配置hibernate属性
propkey="
/prop>
加粗部分根据使用的hibernate不同版本配置,在中就需要配置为
property
name
=
ForHibernate则是上面加粗部分配置。
文件的配置为大致如下:
defaultCache
maxElementsInMemory="
10"
eternal="
false"
timeToIdleSeconds="
120"
timeToLiveSeconds="
>
terracotta/>
/defaultCache>
terracottaConfigurl="
需要注意的是快捷模式下无法使用valueMode="
identity"
模式
具体可根据需要进行扩展。
下面要讲述的客户化模式配置会有很大却别。
以上是express模式的大致配置。
下面记录客户化模式
3.客户化模式下的session复制及缓存
快捷模式不需要tc-config。
Xml文件的支持,直接启动start-tc-server。
Bat(win下)就可以,而客户化模式需要在tc-config.Xml文件中进行配置。
验证session复制的时候就不需要惊醒context。
xml的配置及的拷贝,一切都在tc-config.Xml配置文件中配置大致配置如下:
data>
data/server-data<
/data>
logs>
logs/server-logs<
/logs>
l2-group-port>
9530<
/l2-group-port>
persistence>
mode>
permanent-store<
/mode>
/persistence>
snameattributematchestheTomcatversionyou
isforTomcat.Forexample,ifyouareusing
.
-->
tim-tomcat-common"
tim-session-common"
tim-concurrent-collections"
tim-distributed-cache"
tim-svt"
tim-async-processing"
tim-annotations"
elements,enterthecontextrootofthewebapplicationbeing