[Logo] Terracotta Discussion Forums (LEGACY READ-ONLY ARCHIVE)
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
[Expert]
整合Terracotta+Tomcat的问题 求教  XML
Forum Index -> Terracotta 中文社区
Author Message
finikes

journeyman

Joined: 10/13/2009 02:11:29
Messages: 22
Offline

因为是老问题,为了引起注意不至于埋帖,所以新开了一个主题

版本:
Terracotta:3.1.1
Tomcat:6.0.20
OS:Windows 5.1 (32bit)

初次接触Terracotta,起先是一口气整合了Jetty+Terracotta+Hibernate,发现不能共享缓冲区,于是stepbystep,先做web容器与Terracotta的整合,也就是想利用Terracotta管理集群里面的HttpSession,看的是Terracotta官网的教程,结果发现Jetty自己启动自己的,根本没Terracotta什么事。想想Jetty自己都不熟,而Tomcat比较熟悉且有老马的文章做后盾,于是放弃Jetty,从投Tomcat怀抱。

测试用例:
Tomcat自带的excamples

测试设备:
192.168.0.107:Terracotta服务器+Tomcat节点0
192.168.0.104:Terracotta客户机+Tomcat节点1

具体过程:
1.在两台测试机器上安装Terracotta...OK!

2.安装tim-tomcat(%TERRACOTTA_HOME%\bin\tim-get.bat install tim-tomcat-6.0)
在%TERRACOTTA_HOME%\modules\org\terracotta\modules目录生成tim-tomcat-6.0-2.0.1.jar tim-tomcat-5.5-2.0.1.jar tim-tomcat-common-2.0.1.jar三个文件...OK!

3.编写tc-config.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
 <tc:tc-config
 	xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-5.xsd"
 	xmlns:tc="http://www.terracotta.org/config"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
 	<servers>
 		<server host="192.168.0.107">
 			<dso-port>9510</dso-port>
 		</server>
 	</servers>
 
 	<clients>
 		<modules>
 			<module name="tim-tomcat-6.0" version="2.0.1" />
 			<module name="tim-tomcat-5.5" version="2.0.1" />
 			<module name="tim-tomcat-common" version="2.0.1" />
 		</modules>
 
 	</clients>
 	<application>
 		<dso>
 			<instrumented-classes>
 				<include>
 					<class-expression>cal.*</class-expression>
 				</include>
 			</instrumented-classes>
 			<web-applications>
 				<web-application>examples</web-application>
 			</web-applications>
 		</dso>
 	</application>
 
 </tc:tc-config>


4.%TERRACOTTA_HOME%\bin\tim-get.bat upgrade tc-config.xml:
未更新任何数据,因为三个jar包都是'up to date'...也应该是OK!

5.启动Terracotta服务器:successfully ,and is now ready for work....OK!

6.在%TOMCAT_HOME%\bin目录配置Tomcat节点启动脚本:
set TC_INSTALL_DIR=E:\terracotta\terracotta-3.1.1
set TC_CONFIG_PATH=E:\terracotta\terracotta-3.1.1\tc-config.xml
call %TC_INSTALL_DIR%\bin\dso-env.bat -q
set JAVA_OPTS=%JAVA_OPTS% %TC_JAVA_OPTS%
java -jar bootstrap.jar
(该版本的Tomcat的%TOMCAT_HOME%\bin目录并没有startup.bat文件)

7.Terracotta客户机也运行:%TERRACOTTA_HOME%\bin\tim-get.bat upgrade tc-config.xml...OK!

8.各Tomcat节点启动:Connection successfully established to server at 192.168.0.107:9510...OK!

结果与疑问:
1.系统没有报任何异常,但是在Developer Console的Connected Clients数量始终为零;
2.两台Tomcat节点都可以被访问,但是毫无疑问,它们的HttpSession并没有被统一,因为它们压根就不属于某个集群.

附Tomcat节点terracotta-client.log如下:
2009-10-15 11:02:57,187 [main] INFO com.terracottatech.general - New logging session started.
2009-10-15 11:02:57,296 [main] INFO com.terracottatech.console - Terracotta 3.1.1, as of 20091009-141004 (Revision 13788 by cruise@su10mo5 from 3.1)
2009-10-15 11:02:57,359 [main] INFO com.tc.config.schema.setup.StandardXMLFileConfigurationCreator - Attempting to load configuration from the file at 'E:\terracotta\terracotta-3.1.1\modules\org\terracotta\modules\tc-config.xml'...
2009-10-15 11:02:57,359 [main] INFO com.tc.config.schema.setup.StandardXMLFileConfigurationCreator - Successfully loaded configuration from the file at 'E:\terracotta\terracotta-3.1.1\modules\org\terracotta\modules\tc-config.xml'. Config is:

<?xml version="1.0" encoding="UTF-8"?>
<tc:tc-config
xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-5.xsd"
xmlns:tc="http://www.terracotta.org/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<servers>
<server host="192.168.0.107">
<dso-port>9510</dso-port>
</server>
</servers>

<clients>
<modules>
<module name="tim-tomcat-6.0" version="2.0.1" />
<module name="tim-tomcat-5.5" version="2.0.1" />
<module name="tim-tomcat-common" version="2.0.1" />
</modules>

</clients>
<application>
<dso>
<instrumented-classes>
<include>
<class-expression>cal.*</class-expression>
</include>
</instrumented-classes>
<web-applications>
<web-application>examples</web-application>
</web-applications>
</dso>
</application>

</tc:tc-config>
2009-10-15 11:02:58,000 [main] INFO com.terracottatech.console - Configuration loaded from the file at 'E:\terracotta\terracotta-3.1.1\modules\org\terracotta\modules\tc-config.xml'.
2009-10-15 11:02:58,140 [main] INFO com.tc.properties.TCProperties - Loading default properties from tc.properties
2009-10-15 11:02:58,140 [main] INFO com.tc.properties.TCProperties - tc-config doesn't have any tc-property. No tc-property will be overridden
2009-10-15 11:02:58,140 [main] INFO com.tc.properties.TCProperties - Loaded TCProperties : TCProperties = { cvt.buffer.randomsuffix.enabled = false, cvt.client.fail.buffer.open = false, cvt.rest.interface.enabled = true, cvt.retriever.notification.interval = 60, cvt.statistics.logging.interval = 900, cvt.store.randomsuffix.enabled = false, ehcache.clusterAllCacheManagers = true, ehcache.concurrency = 128, ehcache.evictor.logging.enabled = false, ehcache.evictor.pool.size = 1, ehcache.global.eviction.enable = true, ehcache.global.eviction.frequency = 10, ehcache.global.eviction.rest.timeMillis = 10, ehcache.global.eviction.segments = 2, ehcache.lock.readLevel = READ, ehcache.lock.writeLevel = WRITE, ehcache.logging.enabled = false, http.defaultservlet.attribute.aliases = false;, http.defaultservlet.attribute.dirallowed = false;, http.defaultservlet.enabled = false;, l1.cachemanager.criticalObjectThreshold = -1, l1.cachemanager.criticalThreshold = 90, l1.cachemanager.enabled = true, l1.cachemanager.leastCount = 2, l1.cachemanager.logging.enabled = false, l1.cachemanager.monitorOldGenOnly = true, l1.cachemanager.percentageToEvict = 10, l1.cachemanager.sleepInterval = 3000, l1.cachemanager.threshold = 70, l1.connect.versionMatchCheck.enabled = true, l1.healthcheck.l2.bindAddress = 0.0.0.0, l1.healthcheck.l2.bindPort = 0, l1.healthcheck.l2.ping.enabled = true, l1.healthcheck.l2.ping.idletime = 5000, l1.healthcheck.l2.ping.interval = 1000, l1.healthcheck.l2.ping.probes = 3, l1.healthcheck.l2.socketConnect = true, l1.healthcheck.l2.socketConnectCount = 13, l1.healthcheck.l2.socketConnectTimeout = 5, l1.jvm.check.compatibility = true, l1.l2.config.validation.enabled = true, l1.lock.statistics.gatherInterval = 1, l1.lock.statistics.traceDepth = 0, l1.lockmanager.striped.count = 128, l1.lockmanager.timeout.interval = 60000, l1.max.connect.retries = -1, l1.modules.additional = , l1.modules.default = org.terracotta.modules.excludes-config;bundle-version:=3.1.1,org.terracotta.modules.guimodels-config;bundle-version:=3.1.1,org.terracotta.modules.jdk15-preinst-config;bundle-version:=3.1.1,org.terracotta.modules.standard-config;bundle-version:=3.1.1, l1.modules.repositories = , l1.modules.tc-version-check = , l1.objectmanager.fault.logging.enabled = false, l1.objectmanager.flush.logging.enabled = false, l1.objectmanager.objectid.request.size = 50000, l1.objectmanager.remote.logging.enabled = false, l1.objectmanager.remote.maxDNALRUSize = 60, l1.seda.stage.sink.capacity = -1, l1.serverarray.objectCreationStrategy = round-robin, l1.serverarray.objectCreationStrategy.groupAffinity.groupName = mirror-group1, l1.serverarray.objectCreationStrategy.roundRobin.startIndex = sequential, l1.socket.connect.timeout = 10000, l1.socket.reconnect.waitInterval = 1000, l1.transactionmanager.completedAckFlushTimeout = 5000, l1.transactionmanager.folding.debug = false, l1.transactionmanager.folding.enabled = true, l1.transactionmanager.folding.lock.limit = 0, l1.transactionmanager.folding.object.limit = 0, l1.transactionmanager.logging.enabled = false, l1.transactionmanager.maxBatchSizeInKiloBytes = 128, l1.transactionmanager.maxOutstandingBatchSize = 4, l1.transactionmanager.maxPendingBatches = 88, l1.transactionmanager.maxSleepTimeBeforeHalt = 1024, l1.transactionmanager.strings.compress.enabled = true, l1.transactionmanager.strings.compress.logging.enabled = false, l1.transactionmanager.strings.compress.minSize = 512, l1.transactionmanager.timeoutForAckOnExit = 300, l2.beanshell.enabled = false, l2.beanshell.port = 9929, l2.berkeleydb.je.checkpointer.bytesInterval = 100000000, l2.berkeleydb.je.cleaner.bytesInterval = 20000000, l2.berkeleydb.je.cleaner.detailMaxMemoryPercentage = 5, l2.berkeleydb.je.cleaner.lookAheadCacheSize = 32768, l2.berkeleydb.je.cleaner.minAge = 5, l2.berkeleydb.je.lock.nLockTables = 7, l2.berkeleydb.je.lock.timeout = 180000000, l2.berkeleydb.je.maxMemoryPercent = 25, l2.cachemanager.criticalObjectThreshold = -1, l2.cachemanager.criticalThreshold = 90, l2.cachemanager.enabled = true, l2.cachemanager.leastCount = 2, l2.cachemanager.logging.enabled = false, l2.cachemanager.monitorOldGenOnly = true, l2.cachemanager.percentageToEvict = 10, l2.cachemanager.sleepInterval = 3000, l2.cachemanager.threshold = 70, l2.data.backup.throttle.timeInMillis = 0, l2.healthcheck.l1.ping.enabled = true, l2.healthcheck.l1.ping.idletime = 5000, l2.healthcheck.l1.ping.interval = 1000, l2.healthcheck.l1.ping.probes = 3, l2.healthcheck.l1.socketConnect = true, l2.healthcheck.l1.socketConnectCount = 10, l2.healthcheck.l1.socketConnectTimeout = 5, l2.healthcheck.l2.ping.enabled = true, l2.healthcheck.l2.ping.idletime = 5000, l2.healthcheck.l2.ping.interval = 1000, l2.healthcheck.l2.ping.probes = 3, l2.healthcheck.l2.socketConnect = true, l2.healthcheck.l2.socketConnectCount = 10, l2.healthcheck.l2.socketConnectTimeout = 5, l2.l1reconnect.enabled = false, l2.l1reconnect.maxDelayedAcks = 16, l2.l1reconnect.sendWindow = 32, l2.l1reconnect.sendqueue.cap = 5000, l2.l1reconnect.timeout.millis = 5000, l2.lfu.agingFactor = 1, l2.lfu.debug.enabled = false, l2.lfu.recentlyAccessedIgnorePercentage = 20, l2.lockmanager.greedy.lease.enabled = true, l2.lockmanager.greedy.lease.leaseTimeInMillis = 50, l2.nha.autoRestart = true, l2.nha.dirtydb.autoDelete = true, l2.nha.dirtydb.rolling = 0, l2.nha.send.timeout.millis = 16000, l2.nha.tcgroupcomm.discovery.interval = 1000, l2.nha.tcgroupcomm.handshake.timeout = 5000, l2.nha.tcgroupcomm.reconnect.enabled = false, l2.nha.tcgroupcomm.reconnect.maxDelayedAcks = 16, l2.nha.tcgroupcomm.reconnect.sendWindow = 32, l2.nha.tcgroupcomm.reconnect.sendqueue.cap = 5000, l2.nha.tcgroupcomm.reconnect.timeout = 5000, l2.objectmanager.cachePolicy = lfu, l2.objectmanager.deleteBatchSize = 5000, l2.objectmanager.dgc.faulting.optimization = 0, l2.objectmanager.dgc.throttle.requestsPerThrottle = 1000, l2.objectmanager.dgc.throttle.timeInMillis = 0, l2.objectmanager.dgc.young.enabled = false, l2.objectmanager.dgc.young.frequencyInMillis = 180000, l2.objectmanager.fault.logging.enabled = false, l2.objectmanager.flush.logging.enabled = false, l2.objectmanager.loadObjectID.checkpoint.maxlimit = -1, l2.objectmanager.loadObjectID.checkpoint.maxsleep = 10000, l2.objectmanager.loadObjectID.fastLoad = true, l2.objectmanager.loadObjectID.longsPerDiskEntry = 8, l2.objectmanager.loadObjectID.mapsdatabase.longsPerDiskEntry = 1, l2.objectmanager.maxObjectsInTxnObjGrouping = 5000, l2.objectmanager.maxObjectsToCommit = 5000, l2.objectmanager.maxTxnsInTxnObjectGrouping = 500, l2.objectmanager.objectrequest.logging.enabled = false, l2.objectmanager.objectrequest.split.size = 5, l2.objectmanager.passive.sync.batch.size = 500, l2.objectmanager.passive.sync.throttle.timeInMillis = 0, l2.objectmanager.persistor.logging.enabled = false, l2.objectmanager.persistor.measure.performance = false, l2.objectmanager.request.logging.enabled = false, l2.remotejmx.idletime = 5, l2.remotejmx.maxthreads = 50, l2.seda.commitstage.threads = 4, l2.seda.faultstage.threads = 4, l2.seda.flushstage.threads = 4, l2.seda.gcdeletestage.threads = 1, l2.seda.managedobjectrequeststage.threads = 1, l2.seda.managedobjectresponsestage.threads = 4, l2.seda.stage.sink.capacity = -1, l2.serverarray.2pc.enabled = true, l2.startuplock.retries.enabled = false, l2.transactionmanager.logging.enabled = false, l2.transactionmanager.logging.printBroadcastStats = false, l2.transactionmanager.logging.printCommits = false, l2.transactionmanager.logging.printStats = true, l2.transactionmanager.logging.verbose = false, l2.transactionmanager.passive.throttle.enabled = true, l2.transactionmanager.passive.throttle.maxSleepSeconds = 5, l2.transactionmanager.passive.throttle.threshold = 20000, lock.statistics.enabled = false, logging.longgc.threshold = 8000, logging.maxBackups = 20, logging.maxLogFileSize = 512, memory.monitor.forcebasic = false, net.core.keepalive = false, net.core.tcpnodelay = true, session.debug.hops = false, session.debug.hops.interval = 100, session.debug.invalidate = false, session.debug.sessions = false, session.invalidator.bench.enabled = true, session.invalidator.sleep = 300, session.request.bench.enabled = false, session.request.tracking = false, session.request.tracking.dump = false, session.request.tracking.interval = 2500, session.request.tracking.threshold = 15000, session.vhosts.excluded = , stats.printer.intervalInMillis = 5000, tc.bytebuffer.common.pool.maxcount = 3000, tc.bytebuffer.pooling.enabled = true, tc.bytebuffer.threadlocal.pool.maxcount = 2000, tc.management.mbeans.enabled = true, tc.management.test.mbeans.enabled = false, tc.stage.monitor.delay = 5000, tc.stage.monitor.enabled = false, tcm.monitor.delay = 5, tcm.monitor.enabled = false }
2009-10-15 11:02:58,421 [main] INFO com.terracottatech.console - Log file: 'C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin\logs-192.168.0.107\terracotta-client.log'.
2009-10-15 11:02:58,437 [main] INFO com.tc.logging.TCLogging - All Java System Properties for this Terracotta instance:
========================================================================
awt.toolkit : sun.awt.windows.WToolkit
file.encoding : GBK
file.encoding.pkg : sun.io
file.separator : \
java.awt.graphicsenv : sun.awt.Win32GraphicsEnvironment
java.awt.printerjob : sun.awt.windows.WPrinterJob
java.class.path : E:\terracotta\terracotta-3.1.1\bin\..\bin\..\lib\tc.jar
java.class.version : 50.0
java.endorsed.dirs : C:\Program Files\Java\jdk1.6.0_15\jre\lib\endorsed
java.ext.dirs : C:\Program Files\Java\jdk1.6.0_15\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
java.home : C:\Program Files\Java\jdk1.6.0_15\jre
java.io.tmpdir : C:\DOCUME~1\inet\LOCALS~1\Temp\
java.library.path : C:\Program Files\Java\jdk1.6.0_15\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\StormII\Codec;C:\Program Files\StormII
java.runtime.name : Java(TM) SE Runtime Environment
java.runtime.version : 1.6.0_15-b03
java.specification.name : Java Platform API Specification
java.specification.vendor : Sun Microsystems Inc.
java.specification.version : 1.6
java.vendor : Sun Microsystems Inc.
java.vendor.url : http://java.sun.com/
java.vendor.url.bug : http://java.sun.com/cgi-bin/bugreport.cgi
java.version : 1.6.0_15
java.vm.info : mixed mode
java.vm.name : Java HotSpot(TM) Client VM
java.vm.specification.name : Java Virtual Machine Specification
java.vm.specification.vendor : Sun Microsystems Inc.
java.vm.specification.version: 1.0
java.vm.vendor : Sun Microsystems Inc.
java.vm.version : 14.1-b02
line.separator :

os.arch : x86
os.name : Windows XP
os.version : 5.1
path.separator : ;
sun.arch.data.model : 32
sun.boot.class.path : E:\terracotta\terracotta-3.1.1\bin\..\lib\dso-boot\dso-boot-hotspot_win32_160_15.jar;E:\terracotta\terracotta-3.1.1\bin\..\lib\dso-boot\dso-boot-hotspot_win32_160_15.jar;E:\terracotta\terracotta-3.1.1\bin\..\lib\dso-boot\dso-boot-hotspot_win32_160_15.jar;C:\Program Files\Java\jdk1.6.0_15\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0_15\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_15\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.6.0_15\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_15\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0_15\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_15\jre\classes
sun.boot.library.path : C:\Program Files\Java\jdk1.6.0_15\jre\bin
sun.cpu.endian : little
sun.cpu.isalist :
sun.desktop : windows
sun.io.unicode.encoding : UnicodeLittle
sun.java.launcher : SUN_STANDARD
sun.jnu.encoding : GBK
sun.management.compiler : HotSpot Client Compiler
sun.os.patch.level : Service Pack 3
tc.config : E:\terracotta\terracotta-3.1.1\modules\org\terracotta\modules\tc-config.xml
tc.install-root : E:\terracotta\terracotta-3.1.1\bin\..
user.country : CN
user.dir : C:\Program Files\Apache Software Foundation\Tomcat 6.0\bin
user.home : C:\Documents and Settings\inet
user.language : zh
user.name : inet
user.timezone : Asia/Shanghai
user.variant :
========================================================================
2009-10-15 11:02:59,578 [main] INFO com.tc.bundles.Resolver - Resolved TIM org.terracotta.modules:tim-tomcat-6.0:2.0.1 from file:/E:/terracotta/terracotta-3.1.1/modules/org/terracotta/modules/tim-tomcat-6.0/2.0.1/tim-tomcat-6.0-2.0.1.jar
2009-10-15 11:02:59,640 [main] INFO com.tc.bundles.Resolver - Resolved TIM org.terracotta.modules:tim-tomcat-5.5:2.0.1 from file:/E:/terracotta/terracotta-3.1.1/modules/org/terracotta/modules/tim-tomcat-5.5/2.0.1/tim-tomcat-5.5-2.0.1.jar
2009-10-15 11:02:59,656 [main] INFO com.tc.bundles.Resolver - Resolved TIM org.terracotta.modules:tim-tomcat-common:2.0.1 from file:/E:/terracotta/terracotta-3.1.1/modules/org/terracotta/modules/tim-tomcat-common/2.0.1/tim-tomcat-common-2.0.1.jar
2009-10-15 11:03:00,171 [main] INFO com.tc.plugins.ModulesLoader - BuildInfo for module: org.terracotta.modules.tim-tomcat-6.0
BuildInfo-User: cruise
BuildInfo-Revision: 18723
BuildInfo-Timestamp: 20091009-125241
BuildInfo-URL: http://svn.terracotta.org/svn/forge/projects/tim-tomcat/tags/release-2.0.1/tim-tomcat-6.0
BuildInfo-Host: kong.terracotta.lan

2009-10-15 11:03:00,171 [main] INFO com.tc.plugins.ModulesLoader - BuildInfo for module: org.terracotta.modules.tim-tomcat-5.5
BuildInfo-User: cruise
BuildInfo-Revision: 18723
BuildInfo-Timestamp: 20091009-125240
BuildInfo-URL: http://svn.terracotta.org/svn/forge/projects/tim-tomcat/tags/release-2.0.1/tim-tomcat-5.5
BuildInfo-Host: kong.terracotta.lan

2009-10-15 11:03:00,187 [main] INFO com.tc.plugins.ModulesLoader - BuildInfo for module: org.terracotta.modules.tim-tomcat-common
BuildInfo-User: cruise
BuildInfo-Revision: 18723
BuildInfo-Timestamp: 20091009-125236
BuildInfo-URL: http://svn.terracotta.org/svn/forge/projects/tim-tomcat/tags/release-2.0.1/tim-tomcat-common
BuildInfo-Host: kong.terracotta.lan

2009-10-15 11:03:00,234 [main] INFO com.tc.plugins.ModulesLoader - BuildInfo for module: org.terracotta.modules.tim-session-common
BuildInfo-User: cruise
BuildInfo-Revision: 18945
BuildInfo-Timestamp: 20090928-173414
BuildInfo-URL: http://svn.terracotta.org/svn/forge/projects/tim-session/tags/release-2.0.1/tim-session-common
BuildInfo-Host: kong.terracotta.lan

2009-10-15 11:03:00,359 [main] INFO com.terracottatech.dso - Trying to get Cluster topology from http://192.168.0.107:9510/groupinfo
2009-10-15 11:03:01,359 [main] INFO com.terracottatech.dso - Trying to get L1 Reconnect Properties from http://192.168.0.107:9510/l1reconnectproperties
2009-10-15 11:03:01,531 [main] INFO com.tc.net.core.TCComm - Comm Worker Threads NOT requested
2009-10-15 11:03:01,718 [main] INFO com.tc.net.protocol.transport.ConnectionHealthCheckerImpl: DSO Client - HealthChecker Started
2009-10-15 11:03:02,343 [main] INFO com.tc.net.protocol.tcm.CommunicationsManager - HealthCheck CallbackPort Listener started at /0.0.0.0:3371
2009-10-15 11:03:02,593 [Statistics Logger] INFO com.terracottatech.dso - memory free : 60081312
2009-10-15 11:03:02,593 [Statistics Logger] INFO com.terracottatech.dso - memory used : 6568800
2009-10-15 11:03:02,593 [Statistics Logger] INFO com.terracottatech.dso - memory max : 66650112
2009-10-15 11:03:02,609 [main] INFO com.terracottatech.dso - Statistics buffer opened
2009-10-15 11:03:02,718 [main] INFO com.tc.statistics.StatisticRetrievalAction - "message monitor" statistic is not enabled. Please enable the property "tcm.monitor.delay" to collect this statistics.
2009-10-15 11:03:02,796 [main] INFO com.tc.runtime.TCMemoryManagerImpl - GarbageCollector: Copy
2009-10-15 11:03:02,796 [main] INFO com.tc.runtime.TCMemoryManagerImpl - GarbageCollector: MarkSweepCompact
2009-10-15 11:03:03,031 [L1Management JMX registration] INFO com.tc.management.L1Management - Terracotta JMX connector available at[service:jmx:terracotta://localhost]
2009-10-15 11:03:03,343 [main] INFO com.tc.net.protocol.transport.ClientMessageTransport - ConnectionID(-1.ffffffffffffffffffffffffffffffff): Attaching new connection: com.tc.net.core.TCConnectionJDK14@6372170: connected: true, closed: false local=192.168.0.107:3372 remote=192.168.0.107:9510 connect=[Thu Oct 15 11:03:03 CST 2009] idle=62ms [0 read, 0 write]
2009-10-15 11:03:03,453 [main] INFO com.tc.net.protocol.transport.ConnectionHealthCheckerImpl. DSO Client - Health monitoring agent started for 20090730-1254:9510
2009-10-15 11:03:03,468 [main] INFO com.tc.management.remote.protocol.terracotta.TunnelingEventHandler - Client JMX server ready; sending notification to L2 server
2009-10-15 11:03:03,468 [WorkerThread(client_coordination_stage,0)] INFO com.tc.object.handshakemanager.ClientHandshakeManagerImpl - ClientID[-1]: Connected: Unpausing from State[ PAUSED ] RemoteNode : GroupID[0]. Disconnect count : 1
2009-10-15 11:03:03,500 [L1_L2:TCComm Main Selector Thread (listen 0.0.0.0:3371)] INFO com.tc.net.protocol.transport.ConnectionHealthCheckerImpl. DSO Client - HealthCheckCallbackPort verification PASSED for 20090730-1254:9510(callbackport: 9510)
2009-10-15 11:03:03,593 [WorkerThread(client_coordination_stage,0)] INFO com.tc.object.handshakemanager.ClientHandshakeManagerImpl - ClientID[0]: Received Handshake ack for this node :GroupID[0]
2009-10-15 11:03:03,593 [main] INFO com.terracottatech.console - Connection successfully established to server at 192.168.0.107:9510
2009-10-15 11:03:03,625 [main] INFO com.terracottatech.dso - Connection successfully established to server at 192.168.0.107:9510
2009-10-15 11:03:08,968 [CommonShutDownHook] INFO com.terracottatech.dso - L1 Exiting...
2009-10-15 11:03:09,843 [Thread-1] INFO com.tc.object.tx.RemoteTransactionManagerImpl - ClientID[0]: stop(): took 0 millis to complete

谢指教!
finikes

journeyman

Joined: 10/13/2009 02:11:29
Messages: 22
Offline

下午又多加了台机器测试
现在给me整得Developer Console里面可以看见节点了
并且节点的配置信息都可以看见
Object browser里面可以看见session_localhost/excamples

但是好像session的复制还是不行

我是按照老马的方法测试examples的

在其中一台机器上输入的信息到另外两台机器上完全看不到 而且服务器以及Tomcat的Console完全不打印任何异常信息 页面看上去也很好 就是不同步

费解!
finikes

journeyman

Joined: 10/13/2009 02:11:29
Messages: 22
Offline

问题解决!
tomcat6的问题
windows系统下不要用msi安装版,换zip直接解压版的tomcat6,那里面有startup.bat
用java -jar startup.jar就是不行。
finikes

journeyman

Joined: 10/13/2009 02:11:29
Messages: 22
Offline

老马的文章的测试我没有明白
我后来自己写的测试用例

主要不是用例的问题
而是必须要是同一个uri+端口号码

也就是有负载均衡的情况下才能测试
比如:
node0:192.168.0.1:8080
node1:192.168.0.2:8080
loadBalancer:192.168.0.100:80

必须用loadBalancer测试

用tomcat自带的excamples光测试node我是搞不明白的
lima

consul
[Avatar]
Joined: 06/22/2009 10:12:31
Messages: 361
Offline

来晚了,抱歉,这几天公司的论天警告邮件有问题。看不到那些帖子需要恢复。结果今天上来看到finikes自己忙活了小一个礼拜,呵呵呵。实在不好意思!
不过看来还是有进展的,恭喜先!

既然问题都解决了,我只说说测试和LoadBalancer的问题吧。
在单机上,或者没有负载均衡器的情况下测试Terracotta Session的确需要自己手工指定host:port。

测试的步骤是到第一个机器上做点事情,让他产生Session信息。比如petstore中在购物车里买点东西。
这个时候由于session复制的机制起作用,购物车的信息在另外一个tomcat上应该也能看到了。于是测试的第二步就是去第二个网址,看看购物车里是不是有你刚才放进去的东西。如果有,就证明一切OK了。

至于负载均衡器,每个企业都有自己的选择。有人用apache自带的,有人用专业的硬件设备。总之我们建议使用sticky session的模式。这样同一个用户的请求总能发送到相同的Tomcat节点上,可以避免session数据大量的复制,以保证系统整理性能。
由于Terracotta保证Session在其它节点上需要被访问的时候,能自动复制过去。一旦一个Tomcat宕了,负载均衡器会把原来指向她的请求转发给另外一台Tomcat。那个新的Tomcat访问该用户的session的时候,Terracotta自动就把数据复制了过来。这样用户请求被正常处理。用户体验上来说,根本感觉不到Tomcat宕机的问题。

说的有点远了。希望能有点帮助吧。

老马
finikes

journeyman

Joined: 10/13/2009 02:11:29
Messages: 22
Offline

谢谢老马,很有帮助!
liuyunfeng

neo

Joined: 10/20/2009 00:39:26
Messages: 5
Offline

整合Terracotta+Tomcat的过程
一、首先在服务器端:
使用的版本为linux rhel4 up7
内网ip为192.168.5.186
1、 安装Terracotta-3.1.0
从http://s3.amazonaws.com/TCreleases/terracotta-3.1.0.tar.gz?Signature=GFcrO3EUxUbMuET6aj4ZM%2FjiS5o%3D&Expires=1255167277&AWSAccessKeyId=1ASD4K6SWEHW65J0HV82下载,然后tar -zxvf terracotta-3.1.0.tar.gz –C terracotta ,
2、配置tc-config.xml为:
<tc:tc-config xmlns:tc="http://www.terracotta.org/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-4.xsd">
<servers>
<!-- For more information on working with the Terracotta configuration file, including how to add
more servers, see http://www.terracotta.org/web/display/docs/About+Terracotta+Configuration+Files.

Edit the following server element so that its host attribute contains the value matching the
hostname for the Terracotta server. -->
<server host="192.168.5.186">
<dso-port>9510</dso-port>
</server>
<update-check>
<enabled>true</enabled>
</update-check>
</servers>
<!-- Check that the TIM shown in the <module> element's name attribute matches the Tomcat version you
are using. The TIM listed here, "tim-tomcat-5.5" is for Tomcat 5.5. For example, if you are using
Tomcat 6.0, edit the name to "tim-tomcat-6.0". -->
<clients>
<modules>
<module name="tim-tomcat-5.5" version="2.0.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.
To set the value of the <web-application> element to the default web-application context, use the
special value "ROOT" (without quotation marks). -->

<application>
<dso>
<additional-boot-jar-classes>
<include>java.util.TimeZone</include>
<include>sun.util.calendar.ZoneInfo</include>
</additional-boot-jar-classes>
<instrumented-classes>
<include>
<class-expression>num.NumberGuessBean</class-expression>
</include>
<include>
<class-expression>cal.*</class-expression>
</include>
</instrumented-classes>
<web-applications>
<web-application>jsp-examples</web-application>
</web-applications>
</dso>
</application>
</tc:tc-config>
注:需要说明的是,这里是按照您写的文章里面的配置下来的,因为中间在启动tomcat的过程中遇到了您所说的:
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.
因此在原来的配置文件里面按照提示增加了:
<additional-boot-jar-classes>
<include>java.util.TimeZone</include>
<include>sun.util.calendar.ZoneInfo</include>
</additional-boot-jar-classes>
然后$TERRACOTTA_HOME/bin/make-boot-jar.sh -f $TOMCAT_HOME/tc-config.xml,重新生成了boot jar文件。
另外需要做的就是下载和安装tim-tomcat:
$TERRACOTTA_HOME/bin/tim-get.sh install tim-tomcat-6.0
$TERRACOTTA_HOME/bin/tim-get.sh install tim-tomcat-5.5
$TERRACOTTA_HOME/bin/tim-get.sh install tim-tomcat-5.0
详细的方案见:
http://forge.terracotta.org/releases/projects/tim-tomcat/index.html
二、客户端的配置:
两个客服端的机器也是采用linux rhel4 up7
Ip分别为192.168.5.237和192.168.5.243
Tomcat的版本为5.5.26,这是terracotta所支持的一个版本
1、 安装terracotta的过程见服务器端安装
2、 将在terracotta服务器端(192.168.5.186)所配置过的tc-config.xml拷贝到新的机器上192.168.5.237和192.168.5.243上面,然后$TERRACOTTA_HOME/bin/make-boot-jar.sh -f $TOMCAT_HOME/tc-config.xml,重新生成了boot jar文件
3、 安装tim-tomcat,方法服务器端的配置过程
4、 修改tomcat的启动脚本catalina.sh加入:
JAVA_OPTS='-server -Xms512m -Xmx512m -XXermSize=256M -XX:MaxPermSize=256m -Djava.awt.headless=true -Xbootclasspath/p:/root/terraco
tta/lib/dso-boot/dso-boot-hotspot_linux_150_12.jar -Dtc.install-root=/root/terracotta -Dtc.config=192.168.5.186:9510'
5、 制作启动脚本($tomcat/bin下):
TC_INSTALL_DIR=/root/terracotta
TC_CONFIG_PATH=/root/terracotta/bin/tc-config.xml
$TC_INSTALL_DIR/bin/dso-env.sh -q
export JAVA_OPTS="$JAVA_OPTS $TC_JAVA_OPTS"
. startup.sh
查看tomcat的启动日志出现了:
2009-10-20 11:40:47,470 INFO - Terracotta 3.1.0, as of 20090820-100801 (Revision 13440 by cruise@su10mo5 from 3.1)
2009-10-20 11:41:28,135 INFO - Configuration loaded from the server at '192.168.5.186:9510'.
2009-10-20 11:41:28,417 INFO - Log file: '/usr/local/tomcat/bin/logs-127.0.0.1/terracotta-client.log'.
2009-10-20 11:41:31,267 INFO - Connection successfully established to server at 192.168.5.186:9510

使用netstat -ant | grep 95查看服务器端(192.168.5.186):
tcp 0 0 ::ffff:192.168.5.186:9510 ::ffff:192.168.5.243:33352 ESTABLISHED
tcp 0 0 ::ffff:192.168.5.186:9510 ::ffff:192.168.5.237:14371 ESTABLISHED
这说明tomcat和terracotta服务器端同步成功。这也说明配置的过程还是十分成功的,但是问题出现在了下面。
按照文档里面说的:处理完上述问题后,例子程序中会显示一个日历管理系统。您可以在里面配置一天的工作日程。
在第一台Tomcat服务器上配置好一天的日程,然后到第二台服务器上,打开相同的页面,您会看到前面输入的日程已经显示出来了。您还可以试着在第二台服务器上对日程进行修改,再到第一台上面刷新页面,前面的修改也会立即显示出来。这说明两台Tomcat服务器的session信息已经完全同步了。

可是我按照文档里面做了,单个的tomcat访问都没有问题,但是并没有出现session的同步,也就没有出现文档里面所说的效果了。不过您所说的以及finikes的测试过程我这里也是进行了仔细的学习,如果真是tomcat版本的问题的话,我这里也会在接下来进行相应的测试。这里再次感谢您的回复,也希望测试的过程对后来的人也有一定的帮助意义。

因为CSDN上回复的时候总是出现问题,因此发到这里希望马力老师能够看到!
finikes

journeyman

Joined: 10/13/2009 02:11:29
Messages: 22
Offline

To liuyunfeng:
我测excamples的时候
两个tomcat node
node0:192.168.0.107:8080
node1:192.168.0.108:8080

if访问node0产生的session会被node1共享
只不过访问http://192.168.0.107:8080/excamples/....的时候产生的session
在你访问http://192.168.0.108:8080/excamples/....的时候不能绑定到原来的你访问http://192.168.0.107:8080/excamples/....的时候产生的那个已经被共享的session
原因是url换了 导致你的访问信息变了 服务器认为你是个新的客户端 这个和session的原理有关系

如果你用了负载平衡器
比方是http://192.168.0.109:80/excamples/....
你可以测试到你数次访问的tomcat会在node0和node1之间切换
而session的id是一致的!!!(sessionId的最后的那个数字会不一样,不过这个没关系)
http://forums.terracotta.org/forums/posts/list/2598.page
liuyunfeng

neo

Joined: 10/20/2009 00:39:26
Messages: 5
Offline

感谢finikes的解释,按照finikes 的提示,解释session确实是实现了共享,在通过nginx进行负载均衡调度之后,在node1和node2之间实现了无间隙的访问,如我停掉node1的tomcat之后,访问会转到node2上。
我原来可能是对session的共享有些误解,想是能实现父域和子域之间的自动共享,如http://www.javaeye.com/和http://caibinbupt.javaeye.com/这样能够实现共享session一样。我想finikes的最终目的也会是这样的!
finikes

journeyman

Joined: 10/13/2009 02:11:29
Messages: 22
Offline

你在什么系统上面做的实验?
我的nginx部署在win32上,好像我没给它配置得能够自动故障检测和切换,虽然我希望那么做。
liuyunfeng

neo

Joined: 10/20/2009 00:39:26
Messages: 5
Offline

nginx可以在linux rhel4 上做,当使用nginx负载均衡多个tomcat的时候,nginx可以实现故障的检查,只是在没有使用terracotta的时候,一个tomcat挂掉之后会使分发到这个tomcat上的session丢失。当然在没有使用terracotta的时候,nginx需要使用ip_hash参数,也就是对于从一个ip过来的访问固定的分发到一个tomcat上,这样能保持session,但是一旦分发到那个tomcat挂掉,session就会丢失,引入terracotta应该能解决这一问题,但是现在还是在测试的过程中,还没应用到生产的环境中。
liuyunfeng

neo

Joined: 10/20/2009 00:39:26
Messages: 5
Offline

今天下午又测试了具体的工程,当我将工程里面所需要的类以
<dso>
<instrumented-classes>
<include>
<class-expression>net.xxt.bms.black.action.*</class-expression>
</include>
<include>
<class-expression>net.xxt.bms.black.dao.*</class-expression>
</include>
<include>
<class-expression>net.xxt.bms.black.service.*</class-expression>
</include>
<include>
<class-expression>net.xxt.bms.login.action.*</class-expression>
</include>
<include>
<class-expression>net.xxt.bms.login.dao.*</class-expression>
</include>
<include>
<class-expression>net.xxt.bms.login.service.*</class-expression>
</include>
<include>
<class-expression>net.xxt.bms.login.domain.*</class-expression>
</include>
</instrumented-classes>
<web-applications>
<web-application>bms</web-application>
</web-applications>
</dso>
甚至是
<dso>
<instrumented-classes>
<include>
<class-expression>*.*</class-expression>
</include>
</instrumented-classes>
<web-applications>
<web-application>bms</web-application>
</web-applications>
</dso>
这样的形式添加之后,$TERRACOTTA_HOME/bin/make-boot-jar.sh -f $TOMCAT_HOME/tc-config.xml,重新生成了boot jar文件。但是发现:
# ./make-boot-jar.sh -f tc-config.xml
2009-10-21 16:25:46,567 INFO - Terracotta 3.1.0, as of 20090820-100801 (Revision 13440 by cruise@su10mo5 from 3.1)
2009-10-21 16:25:47,001 INFO - Configuration loaded from the file at '/root/terracotta/terracotta-3.1.0/bin/tc-config.xml'.
2009-10-21 16:25:55,004 INFO - Creating boot JAR file at '/root/terracotta/terracotta-3.1.0/lib/dso-boot/dso-boot-hotspot_linux_150_12.jar'...
2009-10-21 16:25:55,724 INFO - Successfully created boot JAR file at '/root/terracotta/terracotta-3.1.0/lib/dso-boot/dso-boot-hotspot_linux_150_12.jar'.
也就是说并没有更新boot.jar文件。
之后再测试的时候也就没有出现昨天例子中所实现的session的共享了,配置的nginx是实现的1:1的转发,发现无法登陆,另外的情况就是当使用ip_hash的方式时,停掉一个tomcat,刷新的时候也是无法实现无间隙的访问的。这些现象表明并没有成功的实现session的共享。很是郁闷。

希望老马、finikes或者是其他的比较有经验的同仁能将自己的经验共享出来,在此不胜感激。
 
Forum Index -> Terracotta 中文社区
Go to:   
Powered by JForum 2.1.7 © JForum Team