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.zipapache网站tomcat项目下有下载)

mod_jk-1.2.28-httpd-2.2.3.so(2.2.3适合于apache2.2.x版本)

程序安装:

  1. 正常安装apache(默认安装到C:\Program Files\Apache Software Foundation\Apache2.2目录下)
  2. 解压缩apache-tomcat-6.0.18.zip到C:\Program Files\Apache Software Foundation\Tomcat6.0目录下,解压完毕后,重命名tomcat6.0_1,
  3. 复制tomcat6.0_1文件夹,重命名为tomcat6.0_2
  4. 拷贝mod_jk-1.2.28-httpd-2.2.3.so 到Apache2.2/modules目录下
  5. 解压tomcat-connectors-1.2.28-src.zip,拷贝 tomcat-connectors-1.2.28-src\conf文件夹中的 workers.properties 到Apache2.2/conf 目录下(该文件中配置用于集群的Tomcat信息)

tomcat配置:

注:以下配置使用端口号可自行定义,只要不和系统中已经使用的端口号冲突即可。

  1. 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配置:

  1. 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>

  1. 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