tomcat集群配置详解
版本
OS:windows service 2003
Apache: apache_2.2.11-win32-x86-no_ssl
Tomcat:5.0
Jk: mod_jk-apache-2.2.4.so
配置
Apache:
1:安装后Apache后,将mod_jk-apache-2.2.4.so文件拷贝至Apache2.2/modules目录下;
2:添加workers.properties文件
#tomcat服务器列表 worker.list=controller,status #第一个tomcat的配置,tomcat名为t1 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker.t1.port=9009 #tomcat的主机地址,如不为本机,请填写ip地址 worker.t1.host=10.229.9.43 worker.t1.type=ajp13 #server的加权比重,值越高,分得的请求越多 worker.t1.lbfactor=1 #指定分担请求的server列表,用逗号分隔
#第二个tomcat的配置,tomcat名为t2 #ajp13 端口号,在tomcat下server.xml配置,默认8009 worker. t2.port=7009 #tomcat的主机地址,如不为本机,请填写ip地址 worker. t2.host=10.229.9.43 worker. t2.type=ajp13 #server的加权比重,值越高,分得的请求越多 worker. t2.lbfactor=1
#server名为controller,用于负载均衡 worker.controller.type=lb #超时重试次数 #worker.retries=3 #指定分担请求的server列表,用逗号分隔 worker.controller.balance_workers= t1, t2 #设置用于负载均衡的server的session可否共享有 #0:一个session针对每个请求分发 1:一个session登陆后只请求一个tomcat worker.controller.sticky_session=1 #worker.controller.sticky_session_force=1 worker.status.type=status |
3:添加uriworkermap.properties
/*=controller #所有请求都由controller这个server处理 /jkstatus=status #所有包含jkstatus请求的都由status这个server处理 /*.gif=controller #所有以.gif结尾的请求都由controller这个server处理,以下几个都是一样的意思 /*.jpg=controller /*.png=controller /*.css=controller /*.js=controller /*.htm=controller /*.html=controller |
4:修改Apache2.2/conf/httpd.conf文件
在该文件下添加以下内容:
#### 加载 mod_jk 模块 LoadModule jk_module modules/mod_jk-apache-2.2.4.so #### 加载集群中的workers JkWorkersFile conf/workers.properties #### 加载workers的请求处理分配文件 JkMountFile conf/uriworkermap.properties #### 指定jk的日志输出文件 JkLogFile logs/mod_jk.log #### 指定日志级别 JkLogLevel warn |
Tomcat
1:将Tomcat5.01/conf/Catalina/localhost文件夹下的文件全部复制到
Tomcat5.01/conf/Standalone/localhost文件夹下(不存在的话新建);
2:修改server.xml
将
<!-- You should set jvmRoute to support load-balancing via JK/JK2 ie : <Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="jvm1"> -->
<!-- Define the top level container in our container hierarchy --> <Engine name="Catalina" defaultHost="localhost" debug="0"> |
改为:
<!-- You should set jvmRoute to support load-balancing via JK/JK2 ie : --> <Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="t1">
<!-- Define the top level container in our container hierarchy <Engine name="Catalina" defaultHost="localhost" debug="0"> --> |
上面t1对应的是workers.properties中指定的服务器(tomcat);
然后将下面一段代码的注释取消掉
<!-- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" managerClassName="org.apache.catalina.cluster.session.DeltaManager" expireSessionsOnShutdown="false" useDirtyFlag="true">
<Membership className="org.apache.catalina.cluster.mcast.McastService" mcastAddr="228.0.0.4" mcastPort="45564" mcastFrequency="500" mcastDropTime="3000"/>
<Receiver className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="auto" tcpListenPort="4001" tcpSelectorTimeout="100" tcpThreadCount="6"/>
<Sender className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" replicationMode="pooled"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" filter=".*/.gif;.*/.js;.*/.jpg;.*/.htm;.*/.html;.*/.txt;"/> </Cluster> --> |
最后修改/Tomcat5.02/conf/web.xml中添加<distributable/>,以实现session在服务器(tomcat)间进行复制;