引用 单独Tomcat5.X集群详细部署配置和说明

 

引用

【轰隆隆】 的 单独Tomcat5.X集群详细部署配置和说明

来源:铁木箱子的博客

      对于大在线量和高访问量的WEB应用系统而言,web集群的部署是必须的,而且也是必要的。针对Tomcat5.X系列的web应用服务器的集群,通常是分为两个部分,一个是访问负载,一个就是SESSION复制或同步。第二步不是必须的,但是有时候是必要的,关键是要看负载是采用什么样的策略了。比如采用stick session策略,那么同一个用户的所有请求都由一个Tomcat实例来服务,那么也就不需要session复制了,但是同时也缺少了failover的能力。我们今天主要讲的就是Tomcat的session复制功能的相关配置,至于访问负载等相关方面请参看LVS的集群配置等文档。

      我今天这里就Tomcat5系列来说明下如何进行集群配置和部署,其实tomcat中配置集群是非常简单的,只需要如下几个步骤即可完成。

1、修改tomcat实例的server.xml文件

1)找到Engine标签,加入属性:jvmRoute=”node1″,其中node1表示节点的名称;

2)找到Cluster标签,去掉其注释。同时修改tcpListenAddress为本机的IP地址(非127.0.0.1的回路地址)

2、修改应用的web.xml文件

      修改你的web应用WEB-INF目录下的web.xml文件,加入如下标签(这个是tomcat进行session复制所必须的,否则session不能进行复制!)

 
     
  1. />

      完成上述的两个配置后,可以把修改后的tomcat复制到多台机器上,并部署修改了web.xml文件的应用到每个tomcat中,然后启动tomcat就可以实现集群部署了。注意如果是在同一台机器上配置多个tomcat实例来进行集群的测试,那么请一定要注意tomcat实例运行的端口和集群所监听的端口是否冲突!

      tomcat的集群部署修改动作都比较简单,但实际在运行过程中会出现一系列的问题,我这里列举我在配置后使用过程中出现的一些问题和要点,供大家参考:

1、用户存入SESSION中的数据的问题

      使用tomcat集群进行SESSION复制,必须要保证你的session中存放的所有对象都是实现了java.io.Serializable接口的,因为session复制就是序列化对象到其他WEB应用服务器上的,所以如果没有实现该接口,那么SESSION同步将会失败。另外一点,就是如果要同步的机器比较多的话,那么要注意保证SESSION中存放的数据比较小,不要什么都存放到SESSION中,因为复制SESSION也是需要开销的,数据越大开销也越大。

2、Tomcat执行SESSION复制的触发条件

      我们在tomcat的server.xml文件中集群部分cluster标签中可以看到属性:useDirtyFlag,如果这个设置为true(默认的),那么只有当使用setAttribute往session中设置数据的时候才会同步其他WEB服务器的SESSION,如果为false,那么每一次请求的sesison都会被同步到其他服务器上。因此在操作SESSION的时候要特别注意,避免出现SESSION无法同步的问题。

      举个简单的例子,比如我们在单机应用情况下修改SESSION中用户的某一个数据,那么通常就是:

 
     
  1. User user = (User )request. getSession ( ). getAttribute (“user” ) ;
  2. User. setName (“my name” ) ;

      这样我们就是直接存取出来,然后进行修改,虽然在单机情况下没有问题,但是在集群条件下,这样就导致了多台WEB服务器上的SESSION不同步的问题,因为SESSION并没有改变,Tomcat无法监视session中某个数据的值是否发生了变化。因此,我们还需要执行如下操作以保证SESSION的同步:

 
     
  1. request. getSession ( ). setAttribute (“user”, user ) ;

      所以,我们在操作SESSION的时候要特别注意!另外的建议就是,我们应该尽可能的不要修改SESSION中的数据。

3、Linux下的组播问题

      因为Tomcat的SESSION复制通信是通过组播功能来实现不同服务器之间的交互的,所以需要在服务器上开通组播功能,而Linux系统下默认是没有开通的,我们需要通过如下命令来开通其组播功能:

 
     
  1. route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

      在windows下默认是开通组播的,所以无须做改变。

 

 

【轰隆隆】推荐:

http://www.honglonglong.com

http://blog.163.com/fulong258    

你可能感兴趣的:(引用 单独Tomcat5.X集群详细部署配置和说明)