首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

[转]透过 Terracotta实现基于Tomcat的Web应用集群

2013-08-01 
[转]通过 Terracotta实现基于Tomcat的Web应用集群web-applications????? web-applicationmy_web_app1

[转]通过 Terracotta实现基于Tomcat的Web应用集群
<web-applications>
????? <web-application>my_web_app1</web-application>
????? <web-application>my_web_app2</web-application>
</web-applications>


您可能还需要修改Terracotta服务器的信息。比如:

?<server host="192.168.0.100"> <!-- IP or host name of TC server-->
?????? <dso-port>9510</dso-port>
?</server>



把配制好的tc-config.xml文件拷贝到所有机器上。然后在每一台机器上,进入TERRACOTTA_HOME目录,运行:

UNIX/LINUXUNIX/LINUXUNIX/LINUXUNIX/LINUX2009-07-17 10:57:39,425 INFO - Terracotta 3.0.1, as of 20090514-130552 (Revision 12704 by cruise@su10mo5 from 3.0)
2009-07-17 10:57:39,828 INFO - Configuration loaded from the file at '/Users/lma/tc-config.xml'.
2009-07-17 10:57:39,975 INFO - Log file: '/Users/lma/apps/tomcat-5.5.27/bin/logs/client-logs/terracotta-client.log'.
2009-07-17 10:57:42,312 INFO - Connection successfully established to server at 192.168.0.102:9510


如果能看到上述信息,说明Terracotta和Tomcat都正常启动,并且已经与Terracotta服务器成功建立了连接。

验证Session集群

集群启动后,我们可以利用Tomcat内置的Web应用examples来验证集群是否成功配置好。
比如有两台Tomcat服务器分别为http://192.168.0.101:8080和http://192.168.0.102:8080。
首先启动dev-concole.sh(Unix)或dev-console.bat(Windows),连接到Terracotta服务器上。您可以看 到所 有Tomcat节点都显示在Connected Clients中。另外在Object Browser中可以看到一个共享数据:
tc:session_localhost/examples
说明所有session已经被共享到Terracotta服务器上了。

下面把浏览器指向:
http://localhost:8088/examples/jsp/cal/login.html
输入姓名和EMail。点击Submit进入下一级页面。
这时您可能会看到服务器抛出com.tc.exception.TCNonPortableObjectError异常。仔细查看异常信息会发现原来该例 子程序所需的一些类没有包含在tc-config.xml的instrumented-classes配置中。因此需要打开tc-config.xml配 置文件,把如下配置添加到<application><dso>中:

<instrumented-classes>
?????? <include>
???????????? <class-expression>cal.*</class-expression>
??????? </include>
??? </instrumented-classes>

重新启动Tomcat。再打开前面的页面。
您可能还会遇见TCNonPortableObjectError,不过这次的错误是有关boot jar的:

com.tc.exception.TCNonPortableObjectError:
*******************************************************************************
Attempt 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.

只要认真阅读错误信息,按照提示的方法配置tc-config.xml文件,然后执行下面的命令重新生成boot jar文件,再重新启动Tomcat就可以了:

$TERRACOTTA_HOME/bin/make-boot-jar.sh -f $TOMCAT_HOME/tc-config.xml


处理完上述问题后,例子程序中会显示一个日历管理系统。您可以在里面配置一天的工作日程。
在第一台Tomcat服务器上配置好一天的日程,然后到第二台服务器上,打开相同的页面,您会看到前面输入的日程已经显示出来了。您还可以试着在第二台服 务器上对日程进行修改,再到第一台上面刷新页面,前面的修改也会立即显示出来。这说明两台Tomcat服务器的session信息已经完全同步了。

错误处理

1. 如果启动失败,有可能是JAVA_OPTS没有配置好。
可以尝试在startupTC文件中,在set JAVA_OPTS后面打印出JAVA_OPTS的内容。应该看到类似下面的内容:

-Xmx512m -Xms512M -Xbootclasspath/p:/Users/lma/terracotta/terracotta-3.0.1/lib/dso-boot/dso-boot-hotspot_osx_150_19.jar -Dtc.install-root=/Users/lma/terracotta/terracotta-3.0.1 -Dtc.config=/Users/lma/tc-config.xml


2. 如果遇见TCNonPortableObjectException异常,说明在Session中共享的类没有包含在tc-config.xml的 instrumented-classes配置中。一般在异常新吸力面Terracotta会包含需要添加到配置文件中的信息,比如:

<instrumented-classes>
???????? <include>
?????????? <class-expression>num.NumberGuessBean</class-expression>
???????? </include>
???????? <instrumented-classes>
??? </instrumented-classes>

只要按照提示把配置信息放到tc-config.xml文件中,然会从新启动Tomcat即可。

?

附件-tc-config.xml

????? Tomcat 6.0, edit the name to "tim-tomcat-6.0".? -->
????? ?
? <clients>
??? <modules>
????? <module name="tim-tomcat-6.0" version="1.1.0" />
??? </modules>
? </clients>

?<!-- Using <web-application> elements, enter the context root of the web application being clustered.
????? If you are clustering more than one web application, use one <web-application> element per application.
????? Two example <web-application> elements are shown below. Edit or remove these elements as needed.
?<application>
? <dso>
? ??? <instrumented-classes>
???????? <include>
?????????? <class-expression>num.NumberGuessBean</class-expression>
???????? </include>
???????? <include>
?????????? <class-expression>cal.*</class-expression>
???????? </include>
?? ?</instrumented-classes>

??? <web-applications>
????? <web-application>examples</web-application>
??? </web-applications>
? </dso>
?</application>
</tc:tc-config>


<tc:tc-config xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-4.xsd" xmlns:tc="http://www.terracotta.org/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></modules>
</clients>
<application>
<dso>
<instrumented-classes>
我这里按照您说的方式进行搭建环境,但是没有成功出线session的复制,查找中文论坛和官方的文档,发现对于tomcat的问题还是很多,不知马力老师那里能不能再次的出一份文档,为tomcat的集群从安装到搭建的完整的步骤呢?

热点排行