Linux下tomcat集群配置
Apache+Tomcat+Linux集群和均衡负载(Session同步复制)配置实践指南
经过我的多次测试实践,在linux和window下测试通过,win的比较简单,因为在默认的情况下,组播就已经打开。
1在linux下同一台服务器上测试通过(注意端口不要冲突。特别要注意那个tcpListenPort=”4001″)
2在window下的同一台服务器上测试通过,注意要点同上
3window下多台不同主机上测试通过,没有什么好注意点,可以完全备份一个tomcat
4.linux多台不同tomcat服务器上测试通过。这个也是最后实现,最实际的方案。(一般不用在win下部署tomcatweb应用。呵呵。我觉得)
这里讲下第四中情况
先讲一下环境:都是在RedHatLinuxAS4上测试通过
Apache:ip:192.168.1.11(一台)版本:2.0/2.2(做均换负载服务器)
Tomcat:ip1:192.168.1.12ip2:192.168.1.13(两台)版本:5.0、5.5(web应用的RealServer)
Jdk:版本1.5安装在192.168.1.12和192.168.1.13上的tomcat服务器上
安装tomcat和apache,在这里就不讲了。
软件都可以在www.apache.org的网站上找到(apache,tomcat,mod_jk)
1.下载mod_jk.so文件放到apache下的modules下
地址:http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/请选择正确的操作系统和Apache的版本。
2.在apache的conf下建立文件workers.properties
添加内容:
#
#workers.properties
#
#listtheworkersbyname
worker.list=tomcatlb,status
#localhostserver1
#------------------------
worker.tomcat12.port=8009
worker.tomcat12.host=192.168.1.12
worker.tomcat12.type=ajp13
worker.tomcat12.lbfactor=1
worker.tomcat12.connection_pool_timeout=750
worker.tomcat12.socket_keepalive=0
worker.tomcat12.socket_timeout=300000
worker.tomcat12.connect_timeout=10000
worker.tomcat12.reply_timeout=330000
#localhostserver3
#------------------------
worker.tomcat13.port=8009
worker.tomcat13.host=192.168.1.13
worker.tomcat13.type=ajp13
worker.tomcat13.lbfactor=1
worker.tomcat13.connection_pool_timeout=750
worker.tomcat13.socket_keepalive=0
worker.tomcat13.socket_timeout=300000
worker.tomcat13.connect_timeout=10000
worker.tomcat13.reply_timeout=330000
worker.tomcatlb.type=lb
worker.retries=3
worker.tomcatlb.balanced_workers=tomcat12,tomcat13
worker.tomcatlb.sticky_session=1
worker.status.type=status
3.在conf下添加一个mod_jk.conf文件
LoadModulejk_modulemodules/mod_jk.so
#configuremod_jk
JkWorkersFileconf/workers.properties
JkLogFilelogs/mod_jk.log
JkLogLeveldebug
4.增加一个虚拟机配置文件vhosts.conf(这个不是必须的,可以将JkMount的写其他的配置文件中)
DocumentRoot/data/google
ServerNamemy.linuxcoffee.org
ErrorLoglogs/my.linuxcoffee.org-error_log
CustomLoglogs/my.linuxcoffee.org-access_logcommon
DirectoryIndexindex.htmindex.html
JkMount/*.jsptomcatlb
JkMount/*.actiontomcatlb
JKMount/jkstatusstatus
4.修改conf下的httpd.conf文件加上
Includeconf/vhosts.conf
Includeconf/mod_jk.conf
5.配置tomcat
讲Cluster前的注释去掉,启用tomcat集群功能。
一般不需要修改什么东西,但在我这边,两台linux的tomcat就是死活找不到node,而同样的配置文件在window下的跑得很是正常。
有个东西要说明下,因为tomcat的session同步功能需要用到组播,windows默认情况下是开通组播服务的,但是linux默认情况下并没有开通,可以通过指令打开routeadd-net224.0.0.0netmask240.0.0.0deveth0,如果需要服务器启动时即开通组播需在/etc/sysconfig/static-routes文件内加入eht0net224.0.0.0netmask240.0.0.0。具体组播概念请查阅CCNP相关内容。
可以通过netstate-g来查看组播状态,也可以在route-e命令中看到
原来一直提示这个问题
信息:Manager[/clusterapp]:skippingstatetransfer.Nomembersactiveinclustergroup.
最后测试只要修改在Cluster之间的一段代码
Receiver
classname="
org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
改为
Receiver
classname="
org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="192.168.1.12"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
在13的服务器上也将这一段修改为自己的ip
然后打开jvmRoute,跟workers.properties的两个tomcat名字相匹配
ip1
Enginename="Standalone"defaultHost="localhost"jvmRoute="tomcat12"/>
ip2
Enginename="Standalone"defaultHost="localhost"jvmRoute="tomcat13"/>
好了,apache和tomcat的配置好了,可以访问了。
这里,再提供一个链接,可以监控和配置负载均衡的各种信息
http://192.168.1.11/jkstatus或http://my.linuxcoffee.org、jkstatus来访问网站。
注:需要在web.xml的display-name后面下加上一段。这个跟顺序有关的,不然,xml文件会变红哦。
xmlversion="1.0"encoding="UTF-8"?>
web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4">
display-name>TomcatDemodisplay-name>
distributable/>
web-app>