论坛首页 Java企业应用论坛

使用Terracotta和Tomcat建立ACTIVE-PASSIVE模式的集群。

浏览 21297 次
该帖已经被评为精华帖
作者 正文
   发表时间:2007-09-21  
如果大家还没听过Terracotta的话, 请参考http://www.iteye.com/topic/88466这篇文章了解下使用Terracotta的好处。

下载地址:http://www.terracotta.org/confluence/display/orgsite/Download

大家可以通过这个http://www.terracotta.org/confluence/display/docs1/Sessions+Quick+Start知道如果操作Terracotta的tomcat cluster地址。

演示中运行了一个Terracotta server, 两个Tomcat server[9081, 9082]。 演示中没有使用如果Build Terracotta ACTIVE-PASSIVE (多个Terracotta server 让Terracotta server也能failover)。


ok。 我先介绍下我的环境。 我共用了2台pc。  使用的是windows环境。

pc1  ip:192.168.1.119  host name:ydeng
pc2  ip:192.168.1.104  host name:icmwei


我会在pc1,pc2 上分别起一个Terracotta server, 和2个tomcat server。 用 %TERRACOTTA_HOME%作为terracotta的安装地址。


1. 首先打开%TERRACOTTA_HOME%\samples\tc-config.xml 这个文件。修改后的请看如下:


xml 代码
  1. <servers>  
  2.   <server host="192.168.1.119" name="ydeng">  
  3.     <data>data/server-data</data>  
  4.     <logs>logs/server-logs</logs>  
  5.     <l2-group-port>9530</l2-group-port>  
  6.   </server>  
  7.   <server host="192.168.1.104" name="icmwei">  
  8.     <data>data/server-data</data>  
  9.     <logs>logs/server-logs</logs>  
  10.     <l2-group-port>9530</l2-group-port>  
  11.   </server>      
  12.   <ha>  
  13.     <mode>networked-active-passive</mode>  
  14.     <networked-active-passive>  
  15.         <election-time>5</election-time>  
  16.     </networked-active-passive>  
  17.   </ha>  
  18. </servers>  


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

2. 修改%TERRACOTTA_HOME%\tools\sessions\configurator-sandbox\tomcat5.5\tc- config.xml这个文件, 其实跟上面的修改是一样的。都是把servers 节点修改成步骤1的样子。 修改如下:

xml 代码
  1. ....................  省略    
  2. <servers>  
  3.     <server host="192.168.1.119" name="denny">  
  4.       <data>data/server-data</data>  
  5.       <logs>logs/server-logs</logs>  
  6.       <l2-group-port>9530</l2-group-port>  
  7.     </server>  
  8.     <server host="192.168.1.104" name="wenwei">  
  9.       <data>data/server-data</data>  
  10.       <logs>logs/server-logs</logs>  
  11.       <l2-group-port>9530</l2-group-port>  
  12.     </server>      
  13.     <ha>  
  14.         <mode>networked-active-passive</mode>  
  15.         <networked-active-passive>  
  16.             <election-time>5</election-time>  
  17.         </networked-active-passive>  
  18.     </ha>  
  19.   </servers>  
  20.   <clients>  
  21.     <logs>logs/client-logs/%(webserver.log.name)</logs>  
  22.     <modules>  
  23.       <module name="clustered-apache-struts-1.1" version="1.1.0"/>  
  24.     </modules>  
  25.   </clients>  
  26.   
  27. ....................  省略  


Ok, 所有的配置都完成了。  让我们分别在两台机子上启动Terracotta server。  运行 %TERRACOTTA_HOME%\samples\start-demo-server.bat。 然后我们再转到%TERRACOTTA_HOME%\tools\sessions\configurator-sandbox\tomcat5.5目 录。运行start.bat 9081 这样我们就启动了目录9081中的tomcat,端口也是9081。 再运行start.bat 9082启动另外一个tomcat实例。 假设现在的active的Terracotta server在ydeng这台机子上。在这台机子上打开Administrator Console。 路径是 开始--》程序--》Terracotta2.4.3--》Administrator Console。 打开之后你会开到如下图所示的界面。

Admin console

Ok. 这样tomcat cluster就算是跑起来了。 要注意的是Terrcatta sever的active-passive的配置有两种方式。 一种是使用共享目录,另外一种是通过network的方式。  我这里使用的是后者。 各自的优缺点请看文章最后提供的参考资料。

最后我们测试下terrcatta server 的failover。 和 failback。  我们ctrol + c掉active的那个terracotta server。 我们再打开icmwei的那台机子的administator conosle。 如下图:




红色应该表示ydeng这台机子上的terracotta server已经down掉了。 而且4个tomcat都已经连到192.168.1.104这个server上了。 他也变成active了(绿色)。  你也可以再试试把ydeng上面的terracotta server再重启。 你会发现ydeng会变成蓝色了。 说明ydeng failback了。



参考:http://www.terracotta.org/confluence/display/docs1/Configuring+a+Terracotta+Server+Cluster
   发表时间:2007-09-24  
今天准备在JBoss中测试Terracotta的Cluster。

首先建立一个.bat文件。如下:

runWithTerrcattaServer.bat

js 代码
 
  1. setlocal  
  2.   
  3. set TC_CONFIG_PATH=D:\Working\Terracotta\terracotta-2.4.3\tools\sessions\configurator-sandbox\tomcat5.5\tc-config.xml  
  4. call "%TC_INSTALL_DIR%\bin\dso-env.bat" -q  
  5.   
  6. set JAVA_OPTS=%TC_JAVA_OPTS% %JAVA_OPTS%  
  7. call %JBOSS_HOME%\bin\run.bat  
  8.   
  9. endlocal  

从这段.bat中我们知道需要设置TC_INSTALL_DIR, JBOSS_HOME环境变量。 最好是把JAVA_HOME也设置一下。 第三行设置Terracotta的config文件。 第四行是调用terracotta里面的设置java 启动命令, 你可以从打印出来的信息中看到terracotta把java boot class 换掉了。 这就是意味着是通过Terrcotta代理启动JBOss的。 第6行很重要,把第四行命令中生成的替换boot class append到java命令中。 下面这串就是启动JBOSS的java命令参数了。

js 代码
 
  1. -Xbootclasspath/p:"D:\Working\Terracotta\terracotta-2.4.3\bin\..\li  
  2. b\dso-boot\dso-boot-hotspot_win32_160_02.jar" -Dtc.install-root="D:\Working\Terr  
  3. acotta\terracotta-2.4.3\bin\.." -Dtc.config="D:\Working\Terracotta\terracotta-2.  
  4. 4.3\tools\sessions\configurator-sandbox\tomcat5.5\tc-config.xml"  -Dprogram.name    
  5. =run.bat -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun    
  6. .rmi.dgc.server.gcInterval=3600000  

需要注意的是现在的Terracotta并不支持所有的JBOSS. 一下是支持的server列表。

Containers

Apache Tomcat 5.5.20
Apache Tomcat 5.0.28
BEA WebLogic 8.1 sp6
BEA Weblogic 8.1 sp5
BEA Weblogic 9.2
Geronimo1.0.x & 1.1.x
WebSphere CE 1.1
Websphere AS 6.1.0.7
JBoss 3.2.8
JBoss AS 4.0.5

我在jboss-4.2.1.GA下试过, JBOSS启动不成功。 抛出如下错误。

java 代码
 
  1. 2007-09-24 17:49:23,546 DEBUG [org.jboss.mx.loading.RepositoryClassLoader] Added url: file:D:\Working\Terracotta\terracotta-2.4.3\bin\..\lib\session\tc-session.jar, to ucl: org.jboss.mx.loading.UnifiedClassLoader3@44e72b{ url=file:/D:/Working/jboss-4.2.1.GA/server/default/deploy/jboss-web.deployer/ ,addedOrder=6}  
  2. 2007-09-24 17:49:24,781 ERROR [org.apache.commons.digester.Digester] Begin event threw error  
  3. java.lang.AssertionError: Cannot determine tomcat version from JBossWeb/2.0.0.GA  

这个应该是Terracotta出的错。 D:\Working\Terracotta\terracotta-2.4.3\bin\..\lib\session\tc-session.jar。  呵呵。

0 请登录后投票
   发表时间:2007-12-15  
楼主,我看了你的文章刚刚开始学习terracotta,有问题想请教你一下:
  
    关于tomcat:

        我安装多个tomcat然后分别启动这多个tomcat和安装一个tomcat然后运行多个tomcat实例 有什么区别??
0 请登录后投票
   发表时间:2007-12-15  
apollogter 写道
楼主,我看了你的文章刚刚开始学习terracotta,有问题想请教你一下:
  
    关于tomcat:

        我安装多个tomcat然后分别启动这多个tomcat和安装一个tomcat然后运行多个tomcat实例 有什么区别??


基本上没有区别。
0 请登录后投票
   发表时间:2008-07-15  
"运行start.bat 9081 这样我们就启动了目录9081中的tomcat,端口也是9081"
我在命令行切换到“%TERRACOTTA_HOME%\tools\sessions\configurator-sandbox\tomcat5.5”所在的目录然后打入“start.bat 9081 ”,可是我只看到黑屏一闪而过,这个是怎么启动的啊 ?
我是一个新手
0 请登录后投票
   发表时间:2008-07-29  
renavatior 写道
"运行start.bat 9081 这样我们就启动了目录9081中的tomcat,端口也是9081"
我在命令行切换到“%TERRACOTTA_HOME%\tools\sessions\configurator-sandbox\tomcat5.5”所在的目录然后打入“start.bat 9081 ”,可是我只看到黑屏一闪而过,这个是怎么启动的啊 ?
我是一个新手


需要设置环境变量,如:
set CATALINA_HOME=%TC_INSTALL_DIR%\vendors\tomcat5.5
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics