使用Apache2.4和mod_jk进行Tomcat集群

时间:2017-10-17 13:33:41

标签: tomcat apache2.4 mod-jk

我的任务是群集Web服务,以便在删除更新时不停止处理请求。

我开发了 测试模型 ,包括Apache2.4服务器,mod_jk和两个Tocat6工作者。所有组件的测试模型都在一台机器上。我使用的配置是最简单的。

测试模型 正常运行。我可以看到两个工作人员都了解彼此的状态,在我部署更新时用户没有问题。

我们为生产准备的模型包括两台机器:

  1. Apache2.4,mod_jk,Tomcat(Worker1)
  2. Tomcat(Worker2)
  3. 我稍微更改了配置,并且 生产模型 声明的工作类似于测试模型,除了一个细节。

    在我看来,在 生产模式 中,两个工人(在不同的机器上)都不知道彼此的存在。并且没有会话复制。我的工作日志包含这样的记录

    群组中没有活跃的成员
    严重:FarmWarDeployer只能作为主机群子元素工作!

    虽然我确定两只雄猫都在跑步。

    server.xml(worker1)包括像此一样的群集部分

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">
    
       <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
                <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" 
                                port="45564" 
                                frequency="500" 
                                dropTime="3000"/>
                    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
                              address="auto" 
                              port="4000" 
                              tcpListenPort="4007"
                              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"/>
               </Channel>
    
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
                       filter=""/>
                <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
                <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.JvmRouteSessionIDBinderListener"/>
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>    
            </Cluster>      
    
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
    
            <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
    
            </Host>
        </Engine>
    

    server.xml(worker2)仅在端口号上有区别

        <Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
           <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
                <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" 
                                    port="45564" 
                                    frequency="500" 
                                    dropTime="3000"/>
                    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
                                  address="auto" 
                                  port="4000" 
                                  tcpListenPort="4006"
                                  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"/>
    
                </Channel>
    
                <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
                       filter=""/>
                <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
                <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.JvmRouteSessionIDBinderListener"/>
                <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>    
            </Cluster>
    
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
    

    我的问题是:如何正确配置生产模式?我找到的所有样本都使用的模型等于我的 测试模型

0 个答案:

没有答案