<?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/%e9%9b%86%e7%be%a4/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>service集群的快速失败转移策略选择</title>
		<link>http://618119.com/archives/2008/12/28/109.html</link>
		<comments>http://618119.com/archives/2008/12/28/109.html#comments</comments>
		<pubDate>Sat, 27 Dec 2008 18:13:01 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Cluster]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://618119.com/?p=109</guid>
		<description><![CDATA[前提，Service是多个，数组方式存在，hashcode取模方式负载均衡，
当某个  service出现故障时的快速失败转移策略。
1.N+1模式，
N个正常运行的service，1个备份service。
类似心跳检测，当某个service的方法无法调用时，
从数组中将其替换为备份是service，是n对1模式，
优点是替换简便，缺点是始终留一个冷备。
如果同时坏两个的时候不好处理。
还有切换之后待故障service恢复之后的切换回。
可以采取类似浮动ip模式以抢ip的方式来进行切换。
2.rehash
N个正常运行的Service.无备份。
类似心跳检测，当某个service的方法无法调用时。
将按qq取模落在该service上的请求，重新hash，
将其分散到另外N-1个Service上。
如果再坏一个，就rehash到剩下的N-2个。
缺点是算法复杂，优点是无需冷备。不浪费资源

	Tags: 集群

	Related posts
	
	对tomcat cluster集群配置中session复制用法的一个误解 (0)
	关于分布式负载均衡的几个设置 (0)
	体验OpenFire3.4.2的集群功能 (0)
	Openfire 3.5.0正式发布，Openfire Enterprise也将开源 (0)


]]></description>
		<wfw:commentRss>http://618119.com/archives/2008/12/28/109.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Openfire 3.5.0正式发布，Openfire Enterprise也将开源</title>
		<link>http://618119.com/archives/2008/04/08/79.html</link>
		<comments>http://618119.com/archives/2008/04/08/79.html#comments</comments>
		<pubDate>Tue, 08 Apr 2008 04:48:08 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Cluster]]></category>
		<category><![CDATA[IM]]></category>
		<category><![CDATA[Openfire]]></category>
		<category><![CDATA[Spark]]></category>
		<category><![CDATA[XMPP]]></category>
		<category><![CDATA[未分类]]></category>
		<category><![CDATA[coherence]]></category>
		<category><![CDATA[OpenFire]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[spark]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2008/04/08/79.html</guid>
		<description><![CDATA[Openfire 3.5.0正式发布，Openfire Enterprise也将开源
openfire 3.5 的 修订日志在： http://www.igniterealtime.org/builds/openfire/docs/latest/changelog.html
相关下载地址：
http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3_5_0.zip
http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_src_3_5_0.zip
Openfire Enterprise下载
http://www.igniterealtime.org/projects/openfire/plugins/enterprise.jar
http://www.igniterealtime.org/projects/openfire/plugins/webchat.war
其它插件下载：
http://www.igniterealtime.org/projects/openfire/plugins/asterisk-im.jar
http://www.igniterealtime.org/projects/openfire/plugins/broadcast.jar
http://www.igniterealtime.org/projects/openfire/plugins/contentFilter.jar
http://www.igniterealtime.org/projects/openfire/plugins/emailListener.jar
http://www.igniterealtime.org/projects/openfire/plugins/gateway.jar
http://www.igniterealtime.org/projects/openfire/plugins/motd.jar
http://www.igniterealtime.org/projects/openfire/plugins/presence.jar
http://www.igniterealtime.org/projects/openfire/plugins/registration.jar
http://www.igniterealtime.org/projects/openfire/plugins/search.jar
http://www.igniterealtime.org/projects/openfire/plugins/sip.jar
http://www.igniterealtime.org/projects/openfire/plugins/subscription.jar
http://www.igniterealtime.org/projects/openfire/plugins/userImportExport.jar
http://www.igniterealtime.org/projects/openfire/plugins/userservice.jar
http://www.igniterealtime.org/projects/openfire/plugins/enterprise.jar
Openfire Enterprise以前是作为商业插件提供的，现在也将变成开源。相关文章：
http://www.igniterealtime.org/community/blogs/ignite/2008/04/07/openfire-is-lookin-hot
http://www.igniterealtime.org/community/blogs/ignite/2008/04/07/openfire-enterprise-is-becoming-open-source
http://www.igniterealtime.org/community/blogs/ignite/2008/04/07/turning-openfire-enterprise-into-an-open-source-product
目前在官方网站尚未看到 Openfire Enterprise的代码 http://svn.igniterealtime.org/svn/repos/
由于Openfire Enterprise是使用了Oracle Coherence来实现集群功能，
而Oracle Coherence是被Oracle收购的Tangosol Coherence，是商业产品。因此Openfire Enterprise的集群功能不会开源。
关于Oracle Coherence，可以参看： http://www.oracle.com/technology/global/cn/products/coherence/index.html

	Tags: Cluster, coherence, OpenFire, Oracle, spark, 集群

	Related posts
	
	用JDBC连接Oracle 10g RAC遇到的问题 (1)
	关于分布式负载均衡的几个设置 (0)
	service集群的快速失败转移策略选择 (0)
	对tomcat cluster集群配置中session复制用法的一个误解 (0)
	为OpenFire和Spark增加QQTransport–Openfire篇(二) (9)


]]></description>
		<wfw:commentRss>http://618119.com/archives/2008/04/08/79.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>体验OpenFire3.4.2的集群功能</title>
		<link>http://618119.com/archives/2007/12/12/44.html</link>
		<comments>http://618119.com/archives/2007/12/12/44.html#comments</comments>
		<pubDate>Wed, 12 Dec 2007 07:28:25 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[coherence]]></category>
		<category><![CDATA[IM]]></category>
		<category><![CDATA[OpenFire]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[spark]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://618119.com/archives/2007/12/12/44.html</guid>
		<description><![CDATA[体验OpenFire3.4.2的集群功能
曾经因为学习xmpp的时候关注了openfire,那时候还叫WildFire,
曾经照虎画猫用lumaqq写了个qq插件,后来没时间也就没看了.
OpenFire 3.4.2发布了,在3.4开始就支持了集群功能,
changelog在: http://www.igniterealtime.org/builds/openfire/docs/latest/changelog.html
相关下载链接为:
http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3_4_2.zip
http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_src_3_4_2.zip
http://www.igniterealtime.org/downloadServlet?filename=smack/smack_src_3_0_4.zip
http://www.igniterealtime.org/downloadServlet?filename=spark/online/spark_2_5_8_online.exe
http://www.igniterealtime.org/downloadServlet?filename=connectionmanager/connection_manager_src_3_4_2.zip
http://www.igniterealtime.org/downloadServlet?filename=connectionmanager/connection_manager_3_4_2.zip
上面的下载连接不支持断点续传.
http://www.igniterealtime.org/projects/openfire/plugins/asterisk-im.jar
http://www.igniterealtime.org/projects/openfire/plugins/broadcast.jar
http://www.igniterealtime.org/projects/openfire/plugins/contentFilter.jar
http://www.igniterealtime.org/projects/openfire/plugins/sip.jar
http://www.igniterealtime.org/projects/openfire/plugins/gateway.jar
http://www.igniterealtime.org/projects/openfire/plugins/presence.jar
http://www.igniterealtime.org/projects/openfire/plugins/registration.jar
http://www.igniterealtime.org/projects/openfire/plugins/search.jar
http://www.igniterealtime.org/projects/openfire/plugins/subscription.jar
http://www.igniterealtime.org/projects/openfire/plugins/userImportExport.jar
http://www.igniterealtime.org/projects/openfire/plugins/userservice.jar
http://www.igniterealtime.org/projects/openfire/plugins-beta/filetransferdisabler.jar
http://www.igniterealtime.org/projects/openfire/plugins-beta/red5.war
http://www.igniterealtime.org/projects/openfire/plugins-beta/vcard.jar
http://www.igniterealtime.org/projects/openfire/plugins/enterprise.jar
http://www.igniterealtime.org/projects/openfire/plugins/webchat.war
配置openfire的启动参数,比如设置内存,
如果是用openfired.exe启动,则在D:\Java\openfire\bin创建openfired.vmoptions
内容为:
-Xms64m
-Xmx256m
如果是用openfire-service.exe进去启动的,则创建openfire-service.vmoptions.
测试了一下集群功能,openfire clustering特性用的是被Oracle收购的coherence来实现的,授权用的Tangosol Coherence: Application Edition.
tangosol-license.jar中有licensee信息,
coherence的下载地址在:
http://download.oracle.com/otn/java/coherence/coherence-331.zip
来源: http://www.oracle.com/technology/software/products/ias/htdocs/coherence.html

	Tags: coherence, IM, OpenFire, Oracle, spark, 集群

	Related posts
	
	用JDBC连接Oracle 10g RAC遇到的问题 (1)
	对tomcat cluster集群配置中session复制用法的一个误解 (0)
	关于分布式负载均衡的几个设置 (0)
	service集群的快速失败转移策略选择 (0)
	为OpenFire和Spark增加QQTransport–Openfire篇(二) (9)


]]></description>
		<wfw:commentRss>http://618119.com/archives/2007/12/12/44.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>
