接上,apache+tomcat集群配置【存档】

接着前几天的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上:

<Engine  defaultHost="localhost"  name="Catalina" jvmRoute="worker1">
…….
<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.list=lb

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相同。

这几天再做做压力测试。

发表评论