接着前几天的apache+tomcat,应用需要配置集群增加处理能力,tomcat基本安装和配置概不表,环境如下:
仍然使用虚拟主机test.e21.cn;
tomcat1 -> worker1
192.168.0.14:8080
tomcat2 -> worker2
192.168.0.16:8080
apache利用jk实现负载均衡两台tomcat,apache和tomcat2同一台服务器,使用80端口。
1。两台tomcat节点上的配置
tomcat1上:
…….
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
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"
ackTimeout="15000"
waitForAck="true"/>
<Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
……
</Engine>
在tomcat2上配置相同,仅仅修改jvmRoute="worker2"而已。
如果在同一台机器上做两台tomcat,需要修改Server port、Connector port、redirectPort、AJP connector port、Receivertcp ListenPort这五个端口为不同,以免两台tomcat冲突。
分别startup.sh两台tomcat,没意外都可以独立启动,可以通过
http://192.168.0.14:8080
http://192.168.0.16:8080
来测试,注意观察out日志。
2。apache的配置
修改原先之 conf/workers.properties 如下
worker.worker1.type=ajp13
worker.worker1.host=192.168.0.14
worker.worker1.port=8009
worker.worker1.lbfactor=1
worker.worker2.type=ajp13
worker.worker2.host=192.168.0.16
worker.worker2.port=8009
worker.worker2.lbfactor=0
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1,worker2
修改原先之 conf/httpd.conf中的jkmount项目
JkMount /*.jsp lb
JKMount /*.action lb
启动apache,可以通过test.e21.cn访问应该就为正常。
3。session复制测试
修改发布的应用中的web.xml文件,增加
<distributable />
session测试的jsp文件如下:
<%@ page import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%
out.println(session.getId());
%>
访问下面两个路径:
http://192.168.0.14:8080/test.jsp
http://192.168.0.16:8080/test.jsp
如果session复制成功应该显示的sessionID相同。
这几天再做做压力测试。