Apache+Tomcat集群

 

 

版本:

httpd-2.2.22-win32-x86-openssl-0.9.8t.msi

apache-tomcat-7.0.27-windows-x64.zip

windows7 64bit

 

 

 

实例名称

修改的文件

Tcp端口(shutdown,AJP Connector)

jvmRoute属性值

TCP端口

Machine1

\cluster\machine1\conf\server.xml

8015,8019

Machine1

5019

Machine2

\cluster\machine2\conf\server.xml

8025,8029

Machine2

5029

Machine3

\cluster\machine3\conf\server.xml

8035,8039

Machine3

5039

 

 

此处选择的设置确保在同一物理机器上同时启动3个实例不会冲突。如果实际在网络中的3个物理机器上进行测试,它们可以都使用表中的Machine1.。

 

 

Server.xml Cluster节点配置如下:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

                 channelSendOptions="6">

 <!--

          <Manager className="org.apache.catalina.ha.session.BackupManager"

                   expireSessionsOnShutdown="false"

                   notifyListenersOnReplication="true"

                   mapSendOptions="6"/>

         -->  

          <Manager className="org.apache.catalina.ha.session.DeltaManager"

                   expireSessionsOnShutdown="false"

                   notifyListenersOnReplication="true"/>

              

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">

            <Membership className="org.apache.catalina.tribes.membership.McastService"

                        address="228.0.0.4"

                                                        bind="192.168.1.104"

                        port="45564"

                        frequency="500"

                        dropTime="3000"/>

            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

                      address="auto"

                      port="5019"

                      selectorTimeout="100"

                      maxThreads="6"/>

 

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

            </Sender>

            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>

          </Channel>

 

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

                 filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

 

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

                    tempDir="/tmp/war-temp/"

                    deployDir="/tmp/war-deploy/"

                    watchDir="/tmp/war-listen/"

                    watchEnabled="false"/>

 

          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

        </Cluster>

 

加粗的标识根据实际需要变更。

 

Apache修改的地方

Conf\httpd.conf

启用以下模块:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

 

启用:

Include conf/extra/httpd-vhosts.conf

修改conf/extra/httpd-vhosts.conf

 

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.cliff.com.cn

    DocumentRoot "C:/Install/Apache2.2/docs/dummy-host.cliff.com.cn"

    ServerName dummy-host.cliff.com.cn

    ServerAlias www.dummy-host.cliff.com.cn

         ProxyPass / balancer://cluster/ stickysession=jessionid nofailover=On

         ProxyPassReverse  / balancer://cluster

         ProxyRequests Off

         ProxyPreserveHost On

    ErrorLog "logs/dummy-host.cliff.com.cn-error.log"

    CustomLog "logs/dummy-host.cliff.com.cn-access.log" common

</VirtualHost>

 

ProxyRequests Off 

<proxy balancer://cluster>

    BalancerMember ajp://192.168.1.104:8019 loadfactor=1 route=Machine1

         BalancerMember ajp://192.168.1.104:8029 loadfactor=1 route=Machine2

         BalancerMember ajp://192.168.1.104:8039 loadfactor=1 route=Machine3

</proxy>

 

 

 

每个需要集群应用的web.xml 中加入以下配置:

<distributable/>

 

创建测试 session.jsp内容如下:

<%

  //HttpSession session = request.getSession(true);

  System.out.println(session.getId());

  out.println("<br> SESSION ID:" + session.getId()+"<br>");

 

%>

 

访问session.jsp查看.

 

 

原文地址:https://www.cnblogs.com/huangzhijun/p/2723716.html