Tomcat集群需要注意的几件事

Tomcat集群配置很容易,但也有几个问题需要注意 

以Tomcat6 jre6 Ubuntu为例 
第一、集群中所有的服务器要时间同步 
不同组内服务器的时间差不但影响session过期判断,时间差过大时,根本就无法建立集群。Linux下同步时间通常采用ntp协议。可以在每个服务器上增加自动运行脚本文件,每天时间服务器自动同步,如/etc/cron.daily下增加脚本,内容为 

Sh代码   收藏代码
  1. /usr/sbin/ntpdate -s time.nist.gov   



第二、修改需要同步的应用web应用的配置文件web.xml,增加应用的分步标识,即在web-app结点下增加: 

Xml代码   收藏代码
  1. <distributable/>  



第三、为实现会话自动在组内服务器迁移,所有放在session里的对象都要实现java.io.Serializable接口 

第四、打开tomcat下server.xml的注释,这是一种最简单的集群配置方式,适合组内服务器数量不多的情况(少于10台) 

Xml代码   收藏代码
  1. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>  



第五、各台服务器上,通过java.net.InetAddress.getLocalHost().getHostAddress()一定能够获得127.0.0.1的ip地址,用来收听集群消息。 
可用以下代码进行测试 

Java代码   收藏代码
  1. public class test {  
  2.    public static void main(String[] args) throws Exception {  
  3.    
  4.    System.out.println("ip:"+java.net.InetAddress.getLocalHost().getHostAddress());  
  5. }  
  6. }  


将上面的代码保存成test.java 
在相应的机器上执行 

Sh代码   收藏代码
  1. $ javac test.java  
  2. $ java test  


为确保能返回非127.0.0.1的ip,可以编辑/etc/hosts这个文件 
将主机名对应的ip写上即可,如 

Sh代码   收藏代码
  1. 192.168.100.1   myhost001  



监看session情况,和是否所有属性都实现Serializable接口,可以用PSI Probe这个应用,很方便的。有一些遗憾的是对集群本身的详细情况,如结点状态,消息收发情况等仅支持tomcat 5.5这个版本,因为tomcat6中集群对jmx的支持很有限,tomcat7好一些,但也没有tomcat 5.5全。 

猜你喜欢

转载自cn-legend.iteye.com/blog/2347538