Tomcat6+Apache2.2集群配置
准备工作:
注:可点击链接直接下载相应的文件。
JDK 免述,这个要是搞不定,直接回家种地吧。本文使用1.6.0_13
Tomcat版本号:apache-tomcat-6.0.18.zip
Apache版本号:apache_2.2.11-win32-x86-openssl-0.9.8i
另外: tomcat-connectors-1.2.28-src.zip (apache网站tomcat项目下有下载)
mod_jk-1.2.28-httpd-2.2.3.so(2.2.3适合于apache2.2.x版本)
程序安装:
- 正常安装apache(默认安装到C:\Program Files\Apache Software Foundation\Apache2.2目录下)
- 解压缩apache-tomcat-6.0.18.zip到C:\Program Files\Apache Software Foundation\Tomcat6.0目录下,解压完毕后,重命名tomcat6.0_1,
- 复制tomcat6.0_1文件夹,重命名为tomcat6.0_2
- 拷贝mod_jk-1.2.28-httpd-2.2.3.so 到Apache2.2/modules目录下
- 解压tomcat-connectors-1.2.28-src.zip,拷贝 tomcat-connectors-1.2.28-src\conf文件夹中的 workers.properties 到Apache2.2/conf 目录下(该文件中配置用于集群的Tomcat信息)
tomcat配置:
注:以下配置使用端口号可自行定义,只要不和系统中已经使用的端口号冲突即可。
- conf文件夹下的server.xml文件作如下修改:
1) 更正SHUTDOWN端口(两个tomcat分别使用8005和8006)
<Serverport="8005" shutdown="SHUTDOWN">
2) HTTP1.1的connector可以关闭不使用(由apache调度),也可以不关闭(亦可访问响应端口,即不通过apache调度,设定的端口不应与其他端口重复)。
<!--Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" ctPort="8443" /-->
3) 更正AJP1.3端口(两个tomcat分别使用8090和8091),redirectPort亦应不同(分别使用8443和8444)。
<Connectorport="8090" protocol="AJP/1.3" redirectPort="8443" />
4) 替换原来的engine标签,设置jvmRoute的路径以支持通过AJP的负载均衡(不同的tomcat配置不同的jvmRoute,这里使用tomcat01,tomcat02)
<Enginename="Standalone" defaultHost="localhost" jvmRoute="tomcat01">
5) 设置cluster属性,其中Receiver的端口页应为唯一的不重复的端口(两个tomcat分别使用5002和5003)。
<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
<ManagerclassName="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">
<MembershipclassName="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="5003"
selectorTimeout="100"
maxThreads="6"/>
<SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<ValveclassName="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListenerclassName="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
6) 在host节点中增加context指定应用程序路径。
<Contextpath="" reloadable="true" docBase="C:\Program Files\Apache Software Foundation\myApp" > </Context>
apache配置:
- Apache2.2\conf文件夹下: http.conf文件修改
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
JkWorkersFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/workers.properties"
JkLogFile "C:/Program Files/Apache Software Foundation/Apache2.2/logs/mod_jk2.log"
#设置Apache支持对servlet传送,用以Tomcat解析,loadbalancer对应于workers.properties中的配置
JkMount /servlet/* loadbalancer
#置Apache支持对jsp传送,用以Tomcat解析
JkMount /*.jsp loadbalancer
#设置Apache支持对.do传送,用以Tomcat解析
JkMount /*.do loadbalancer
在httpd.conf的最后加入如下信息配置要集群的服务器,以下信息均与要集群的Tomcat对应
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8090 loadfactor=1 route=tomcat01
BalancerMember ajp://127.0.0.1:8091 loadfactor=1 route=tomcat02
</proxy>
- Apache2.2\conf文件夹下: workers.properties文件修改,查找并更正为如下:
workers.tomcat_home=C:\Program Files\Apache Software Foundation\Tomcat 6.0_1rogram Files\Apache Software Foundation\Tomcat 6.0_2
workers.java_home=C:\Program Files\Java\jdk1.6.0_13
worker.list=loadbalancer,tomcat01,tomcat02
#定义第一个集群节点
worker.tomcat01.port=8090
worker.tomcat01.host=localhost
worker.tomcat01.type=ajp13
worker.tomcat01.lbfactor=1
#定义第二个集群节点
worker.tomcat02.port=8091
worker.tomcat02.host=localhost
worker.tomcat02.type=ajp13
worker.tomcat02.lbfactor=1
#负载均衡行为
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcat01,tomcat02
worker.loadbalancer.sticky_session=1
部署应用程序配置:
拷贝你的应用程序到C:\Program Files\Apache Software Foundation\目录下,(假定名称myApp)
对于进行负载和集群的tomcat应用程序,在web.xml中应添加一项配置<distributable/>,添加的位置如下所示:
<web-app>
<distributable/>
</web-app>
总结:
以上配置主要注意一下端口的更正,不同的tomcat要使用不同的端口:
shutdown port
HTTP port
HTTP port redirect port
AJP port
AJP redirect port
Receiver port