Tomcat集群和Session共享的配方法

    <h3><span style="font-weight: normal;">tomcat集群配置其实很简单,在tomcat自带的文档中有详细的说明( /docs/cluster-howto.html ),只不过是英语的,对我这样的人来说很难懂<img src="/images/smiles/icon_cry.gif" alt="">。</span></h3> 
下面根据说下怎么配置吧:
<h3><span style="color: #0000ff;">第一步、准备工作:</span></h3>准备几份tomcat程序,比如分别叫tomcat1、tomcat2、...
如果各tomcat程序放在不同的机器上,那么就不会有端口的冲突;
如果是放在同一台机器上的话,那就简单改几个端口,防止端口占用造成的冲突。打开conf文件夹中的server.xml文件,需要修改的端口有:
  1. <server port="<span style="color: #ff0000;">8005</span>" shutdown="shutdown">:这里的port要改改
  2. <connector port="<span style="color: #ff0000;">8080</span>" protocol="http/1.1"/>:这里的port也要改改
  3. <connector port="<span style="color: #ff0000;">8009</span>" protocol="ajp/1.3"/>:这里的port也要改改
至于修改成什么样子,看你自己了,只要不出现端口冲突就可以了,要保证各个tomcat实例间没有端口冲突
<h3><span style="color: #0000ff;">第二步、配置tomcat的集群设置:</span></h3>还是修改server.xml文件,最简单的集群配置只需要将<engine/>节点中注释掉的下面这句取消注释即可:
<cluster classname="org.apache.catalina.ha.tcp.simpletcpcluster"/>
使用这样方法配置的集群会将session同步到所在网段上的所有配置了集群属性的实例上(此处讲所在网段可能不准确,因为用的228.0.0.4地址进行的广播,我不清楚这是个什么性质的广播地址<img src="/images/smiles/icon_sad.gif" alt="">)。也就是说如果该广播地址下的所有tomcat实例都会共享session,那么假如有几个互不相关的集群,就可能造成session复制浪费,所以为了避免浪费就需要对<cluster>节点多做点设置了,如下:
<cluster classname="org.apache.catalina.ha.tcp.simpletcpcluster">	<channel classname="org.apache.catalina.tribes.group.groupchannel">		<membership classname="org.apache.catalina.tribes.membership.mcastservice"			address="228.0.0.4"			port="45564"			frequency="500"			droptime="3000"/>	</channel></cluster>
加了一个<channel>,里面包了个<membership>,咱们要关注的就是membership的port属性,不同的集群设置不同的port值,从目前的使用来看,基本上是隔离开了。
<h3><span style="color: #0000ff;">第三步、修改项目的web.xml文件:</span></h3>web.xml文件的修改很简单:只需要在<web-app/>节点中添加<span style="color: #0000ff;"><distributable/></span>这个节点就可以了。
 
ok,有了这三步就实现了tomcat的集群和session的共享了。
以上测试环境为 winxp + tomcat6.0.30
 

猜你喜欢

转载自bd2007.iteye.com/blog/1146985
今日推荐