Posts Tagged ‘集群’

体验OpenFire3.4.2的集群功能

星期三, 12月 12th, 2007

体验OpenFire3.4.2的集群功能

曾经因为学习xmpp的时候关注了openfire,那时候还叫WildFire,
曾经照虎画猫用lumaqq写了个qq插件,后来没时间也就没看了.

OpenFire 3.4.2发布了,在3.4开始就支持了集群功能,

changelog在: http://www.igniterealtime.org/builds/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/docs/latest/changelog.html

相关下载链接为:

http://www.igniterealtime.org/downloadServlet?filename=--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/openfire_3_4_2.zip
http://www.igniterealtime.org/downloadServlet?filename=--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/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=--escaped_anchor:e8b9b88aab5416e56fe429cf45045bf5--/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/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/asterisk-im.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/broadcast.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/contentFilter.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/sip.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/gateway.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/presence.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/registration.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/search.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/subscription.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/userImportExport.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/userservice.jar

http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins-beta/filetransferdisabler.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins-beta/red5.war
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins-beta/vcard.jar

http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/plugins/enterprise.jar
http://www.igniterealtime.org/projects/--escaped_anchor:02a7ab568a16996440ac0b9fac8e7c4a--/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.--escaped_anchor:e678decc0d1b667116b4e88be425465c--.com/otn/java/coherence/coherence-331.zip
来源: http://www.--escaped_anchor:e678decc0d1b667116b4e88be425465c--.com/technology/software/products/ias/htdocs/coherence.html

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

Related posts

对tomcat cluster集群配置中session复制用法的一个误解

星期二, 11月 13th, 2007

一直以来,我误解认为启动了n个tomcat,则Session需要同步复制到n个Tomcat中存在,因此在启动了6个以上的Tomcat,性能会大大下降。

而实际情况下,采取ApacheTomcat进行负载均衡集群的时候,是可以不用将Session复制到所有的节点里,

比如有六个Tomcat实例

Tomcat1,Tomcat2,Tomcat3,Tomcat4,Tomcat5,Tomcat6

是可以配置成 三组互相复制Session的群组,
比如Tomcat1和Tomcat2互相同步Session,
比如Tomcat3和Tomcat4互相同步Session,
比如Tomcat5和Tomcat6互相同步Session.

再在Apachemod_jk模块里,对每个worker配置上redirect和activation属性。

将Tomcat1,Tomcat3,Tomcat5做为对外正常提供服务器的Tomcat,

Tomcat2,Tomcat4,Tomcat6作为分别对应的灾难恢复的备份Tomcat.

即比如Tomcat1当机之后,Apache会自动将发给Tomcat1的请求转发到Tomcat2上,
而Tomcat2因为同步了Tomcat1的Session信息,因此从用户的角度,是感觉不出任何差异的。

单纯的Tomcat测试如下:

Tomcat配置:

Tomcat1. port=”15080″, jvmRoute=”tomcat1″,
<Membership className=”org.apache.catalina.tribes.membership.McastService”
address=”228.0.0.5″
port=”45564″
frequency=”500″
dropTime=”3000″/>

Tomcat2. port=”16080″, jvmRoute=”tomcat2″,
<Membership className=”org.apache.catalina.tribes.membership.McastService”
address=”228.0.0.5″
port=”45564″
frequency=”500″
dropTime=”3000″/>

Tomcat3. port=”17080″, jvmRoute=”tomcat3″,
<Membership className=”org.apache.catalina.tribes.membership.McastService”
address=”228.0.0.6″
port=”45564″
frequency=”500″
dropTime=”3000″/>

Tomcat4. port=”18080″, jvmRoute=”tomcat4″,
<Membership className=”org.apache.catalina.tribes.membership.McastService”
address=”228.0.0.6″
port=”45564″
frequency=”500″
dropTime=”3000″/>

Tomcat5. port=”19080″, jvmRoute=”tomcat5″,
<Membership className=”org.apache.catalina.tribes.membership.McastService”
address=”228.0.0.7″
port=”45564″
frequency=”500″
dropTime=”3000″/>

Tomcat6. port=”20080″, jvmRoute=”tomcat6″,
<Membership className=”org.apache.catalina.tribes.membership.McastService”
address=”228.0.0.7″
port=”45564″
frequency=”500″
dropTime=”3000″/>

所有的Tomcat webapp的web.xml加上<distributable />

(例如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的后缀会变成对应TomcatjvmRoute.
(以上测试的tomcat均在同一台服务器上)

接下来再配置Apachemod_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/--escaped_anchor:9024a87d4a565de9784d37f93c19ba7d--/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