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服务,相关配置文件的基本服务端口要修改完整,避免端口冲突而导致服务异常。