Tomcat端口冲突导致VCS切换失败

问题描述:
 
SUSE10 SP2+VCS4.1MP4,VCS双机部署了VSM tomcat业务。双机和业务均运行正常的,业务在主机A运行。近期因测试业务进行双机倒换,发现备机B 始终无法正常接管tomcat 服务资源,VCS切换失败。使用hastart手工先启动备机B,tomcat 服务同样无法启动,而在A机上tomcat则可以正常拉起。
 
检查VCS日志有报错:
 
 2011/10/21 15:27:26 VCS INFO V-16-6-15004 (urp1vsmdb1) hatrigger:Failed to send trigger for resfault; script doesn't exist
 2011/10/21 15:27:27 VCS INFO V-16-1-10305 Resource Tomcatip (Owner: unknown, Group: Tomcat) is offline on urp1vsmdb1 (VCS initiated)
 
2011/10/21 15:27:27 VCS ERROR V-16-1-10205 Group Tomcat is faulted on system urp1vsmdb1
 
原因分析:
 
1首先检查双机配置,两台服务器的main.cf双机都是完全一致的,使用hacf -verify config 校验也为正常。
 
2,考虑到VCS双机原来一直运行正常,配置也未做任何改动,而每次启动都是B机tomcat服务无法拉起,故着重从B机tomcat检查入手。
 
3,不启用VCS双机,用VSM video用户登陆B机,直接使用tomcat/bin /startup.shstar.sh脚本启动tomcat服务,发现同样无法拉起;
 
 4、考虑到近期刚在B机上新安装了1套MSP,由于2套服务都是tomcat,怀疑是tomcat http访问端口冲突,检查tomcat/conf/server.xml配置文件,相关端口是已经修改过的,语音短信服务端口为11088,MSP服务端口为8080两者并不冲突;
 
 <Service
 
      name="Catalina">
 
    <Connector
 
        port="8080"
 
 
 
5、使用Tail –f catalina.out跟踪B机日志,发现当语音短信tomcat 启动时报8009和8005端口被占用:
 
INFO: Port busy 8009 java.net.BindException: Address already in use
 
Oct 25, 2011 6:05:33 PM org.apache.catalina.core.StandardServer await
 
SEVERE: StandardServer.await: create[8005]:
 
java.net.BindException: Address already in use
 
使用netstat –an命令检查,果然发现2个端口都已被占用
 
urp1vsmdb1:~ # netstat -an | grep 8009
 
tcp        0      0 :::8009                :::*                    LISTEN   

urp1vsmdb1:~ # netstat -an | grep 8005
 
tcp        0      0 :::8005                :::*                    LISTEN
 
 
 
将MSP的tomcat服务关闭后,再次使用netstat –an|命令验证,发现相应端口已关闭。此时再次启动B机tomcat可正常启动。问题明了,安装MSP后相关服务端口未修改完整而导致双机切换失败。

问题处理:
 
使用语音短信业务video用户登录B机,修改tomcat/conf目录下的server.xml文件相应端口,避免和MSP端口调用冲突,需修改如下三个地方:
 
(1)      修改http访问端口,该端口默认为8080,为访问web服务器端口,将8080修改为11088。
 
 
 
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
 
    <Connector port="11088" maxHttpHeaderSize="8192"
 
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
 
              enableLookups="false" redirectPort="8443" acceptCount="100"
 
              connectionTimeout="20000"

disableUploadTimeout="true"
 
URIEncoding="UTF-8"/>
 
(2)    修改AJP端口:该端口默认为8009,将其修改为8090,为AJP服务使用
 
 <!-- Define an AJP 1.3 Connector on port 8009 -->
 
    <Connector port="8090"

              enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
 
(3)    修改shutdown 端口,该端口默认为8005,将其修改为8050,为关闭tomcat服务使用
 
<Server port="8050" shutdown="SHUTDOWN">
 
修改完成后重启服务,进行业务验证,双机和MSP均工作正常
 
总结:
 
一台服务器如果要想启动多套tomcat服务,相关配置文件的基本服务端口要修改完整,避免端口冲突而导致服务异常。

vcs