<?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; 负载均衡</title>
	<atom:link href="http://618119.com/tag/%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1/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>关于分布式负载均衡的几个设置</title>
		<link>http://618119.com/archives/2008/01/29/68.html</link>
		<comments>http://618119.com/archives/2008/01/29/68.html#comments</comments>
		<pubDate>Tue, 29 Jan 2008 00:38:31 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[DNS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[负载均衡]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2008/01/29/68.html</guid>
		<description><![CDATA[服务器对外的展现要统一，简洁。
即用户在URL里看到的地址是很方便记忆的。
而对于页面中嵌入的图片，脚本，样式表，视频，音频等文件，则可以放在其它服务器上。
第一层： DNS记录轮询负载均衡
以 www.google.com为例进行分析
1.首先是将 www.google.com，指定多个cname,根据不同的网络线路请求得到不同的别名
比如在中国得到的别名为：www.l.google.com,
www.l.google.com 的别名为： www-china.l.google.com
www-china.l.google.com再指定多个ip的a记录，
例如 ip 64.233.189.99, 64.233.189.104,64.233.167.147.
99,104,147这三个ip分别实现ip别名绑定，即如果99这个ip挂了，104会自动接管该ip到本机。
通过这样的方式，保证用户最终访问到的ip始终在线。
在cname解析的地方，可以使用多层cname解析，以实现更细粒度的负载均衡并灵活切换。
假设当www-china.l.google.com下整个节点都断网了，则只需要将www.l.google.com指向www-usa.l.google.com这样就可以切换了。
（纯属猜测：指定了cname的域名，则不要再配置a记录，因为a记录的优先级比cname高。）
dns解析过程记录如下：
[code]
E:\&#62;nslookup
DNS request timed out.
timeout was 2 seconds.
*** Can't find server name for address 192.168.18.1: Timed out
*** Default servers are not available
Default Server:  UnKnown
Address:  192.168.18.1
&#62; server 202.96.128.86
DNS request timed out.
timeout was 2 seconds.
Default Server:  [202.96.128.86]
Address:  202.96.128.86
&#62; server 202.96.128.86
Default Server:  cache-a.guangzhou.gd.cn
Address:  202.96.128.86
&#62; set q=cname
&#62; www.google.com
Server:  cache-a.guangzhou.gd.cn
Address:  202.96.128.86
Non-authoritative answer:
www.google.com  canonical [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2008/01/29/68.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
