<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lizongbo at 618119.com &#187; session复制</title>
	<atom:link href="http://618119.com/tag/session%e5%a4%8d%e5%88%b6/feed" rel="self" type="application/rss+xml" />
	<link>http://618119.com</link>
	<description>工作,生活,java,apache,tomcat,Resin,mina,Hessian,Openfire,XMPP,RPC,Ubuntu</description>
	<lastBuildDate>Sat, 21 Aug 2010 08:34:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>对tomcat cluster集群配置中session复制用法的一个误解</title>
		<link>http://618119.com/archives/2007/11/13/26.html</link>
		<comments>http://618119.com/archives/2007/11/13/26.html#comments</comments>
		<pubDate>Tue, 13 Nov 2007 00:34:48 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[distributable]]></category>
		<category><![CDATA[JGroups]]></category>
		<category><![CDATA[jvmRoute]]></category>
		<category><![CDATA[loadbalancer]]></category>
		<category><![CDATA[mod_jk]]></category>
		<category><![CDATA[session复制]]></category>
		<category><![CDATA[Tribes]]></category>
		<category><![CDATA[负载均衡]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2007/11/13/26.html</guid>
		<description><![CDATA[一直以来，我误解认为启动了n个tomcat，则Session需要同步复制到n个Tomcat中存在，因此在启动了6个以上的Tomcat，性能会大大下降。
而实际情况下，采取Apache 加Tomcat进行负载均衡集群的时候，是可以不用将Session复制到所有的节点里，
比如有六个Tomcat实例
Tomcat1,Tomcat2,Tomcat3,Tomcat4,Tomcat5,Tomcat6
是可以配置成 三组互相复制Session的群组，
比如Tomcat1和Tomcat2互相同步Session,
比如Tomcat3和Tomcat4互相同步Session,
比如Tomcat5和Tomcat6互相同步Session.
再在Apache的mod_jk模块里，对每个worker配置上redirect和activation属性。
将Tomcat1,Tomcat3,Tomcat5做为对外正常提供服务器的Tomcat,
Tomcat2,Tomcat4,Tomcat6作为分别对应的灾难恢复的备份Tomcat.
即比如Tomcat1当机之后，Apache会自动将发给Tomcat1的请求转发到Tomcat2上，
而Tomcat2因为同步了Tomcat1的Session信息，因此从用户的角度，是感觉不出任何差异的。
单纯的Tomcat测试如下：
Tomcat配置：
Tomcat1. port=&#8221;15080&#8243;, jvmRoute=&#8221;tomcat1&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.5&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat2. port=&#8221;16080&#8243;, jvmRoute=&#8221;tomcat2&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.5&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat3. port=&#8221;17080&#8243;, jvmRoute=&#8221;tomcat3&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.6&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat4. port=&#8221;18080&#8243;, jvmRoute=&#8221;tomcat4&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.6&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat5. port=&#8221;19080&#8243;, jvmRoute=&#8221;tomcat5&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.7&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
Tomcat6. port=&#8221;20080&#8243;, jvmRoute=&#8221;tomcat6&#8243;,
&#60;Membership className=&#8221;org.apache.catalina.tribes.membership.McastService&#8221;
address=&#8221;228.0.0.7&#8243;
port=&#8221;45564&#8243;
frequency=&#8221;500&#8243;
dropTime=&#8221;3000&#8243;/&#62;
所有的Tomcat webapp的web.xml加上&#60;distributable /&#62;
(例如D:\Java\Tomcat2\webapps\examples\WEB-INF\web.xml ，)
测试页面为：
第一组:
http://localhost:15080/examples/servlets/servlet/SessionExample
http://localhost:16080/examples/servlets/servlet/SessionExample
第二组:
http://localhost:17080/examples/servlets/servlet/SessionExample
http://localhost:18080/examples/servlets/servlet/SessionExample
第三组:
http://localhost:19080/examples/servlets/servlet/SessionExample
http://localhost:20080/examples/servlets/servlet/SessionExample
在每一组中，打开其中任何一个链接，然后设置属性值，
都可以在访问另外一个链接的时候得到。对应的sessionid的后缀会变成对应Tomcat的jvmRoute.
(以上测试的tomcat均在同一台服务器上)
接下来再配置Apache的mod_jk.
workers.properties的内容节选如下：
(重点是redirect和activation两个属性)
worker.tomcat1.port=15009
worker.tomcat1.host=127.0.0.1
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.tomcat1.redirect=tomcat2
worker.tomcat2.port=16009
worker.tomcat2.host=10.108.20.126
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.tomcat2.redirect=tomcat1
worker.tomcat2.activation=disabled
详细参考：
http://tomcat.apache.org/connectors-doc/generic_howto/loadbalancers.html
备注：Tomcat6已经没有使用JGroups来实现集群复制，
而是使用Apache Tribes 来实现该效果的。
Apache Tribes的介绍在：
http://tomcat.apache.org/tomcat-6.0-doc/tribes/introduction.html
为了简便配置，因此只使用一份Tomcat,使用不同的cofig来启动，配置好的文件在：
http://618119.com/docs/Tomcat/TomcatCluster.zip
下载解压到Tomcat(例如D:\Java\apache-tomcat-6.0.14)目录里，运行对应的bat文件即可：
start15080.bat
start16080.bat
start17080.bat
start18080.bat
start19080.bat
start20080.bat

	Tags: Apache, Cluster, distributable, JGroups, jvmRoute, loadbalancer, mod_jk, session复制, Tomcat, Tribes, 负载均衡, 集群

	Related posts
	
	配置独立运行的jsp预编译ant脚本 (0)
	给wordpress加上记录Combined格式日志的功能 (0)
	开张了。 (0)
	在Tomcat 6.0.14中安装配置awstats (0)
	在Apache Tomcat上安装Wordpress 2.3 (0)


]]></description>
		<wfw:commentRss>http://618119.com/archives/2007/11/13/26.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
