xiaochuan 发表于 2017-1-8 09:28:33

Apache 2.2.x+Tomcat6集群配置备忘

  在我们部署Web应用时,不可避免大多都会涉及到集群问题,此文作为Apache 2.2.x+Tomcat6配置集群的备忘。

1.配置Tomcat6 的conf\server.xml文件,启用集群设置,如果在本地同时运行多个Tomcat进行测试的话,需要修改部分端口号,以避免冲突
1.打开AJP:<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
2.打开集群:

Xml代码





[*]   <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">       
[*]     
[*]     <!--For clustering, please take a look at documentation at:      
[*]         /docs/cluster-howto.html  (simple how to)      
[*]
         /docs/config/cluster.html (reference documentation) -->     
[*]           
[*]          
[*]
<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"          
[*]
    port="45564"          
[*]
    frequency="500"          
[*]
    dropTime="3000"/>          
[*]
    <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"          
[*]
    address="auto"          
[*]
    port="5001"          
[*]
    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>     
[*]     
[*]     
[*]             
[*]     
[*]     <!-- The request dumper valve dumps useful debugging information about      
[*]          the request and response data received and sent by Tomcat.      
[*]
          Documentation at: /docs/config/valve.html -->     
[*]
     <!--    
[*]     <Valve className="org.apache.catalina.valves.RequestDumperValve"/>    
[*]     -->     
[*]     
[*]     <!-- This Realm uses the UserDatabase configured in the global JNDI      
[*]          resources under the key "UserDatabase".  Any edits      
[*]          that are performed against this UserDatabase are immediately      
[*]
          available for use by the Realm.  -->     
[*]
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm"     
[*]
            resourceName="UserDatabase"/>     
[*]     
[*]     <!-- Define the default virtual host      
[*]          Note: XML Schema validation will not work with Xerces 2.2.      
[*]
      -->     
[*]
     <Host name="localhost"  appBase="webapps"     
[*]
           unpackWARs="true" autoDeploy="true"     
[*]
           xmlValidation="false" xmlNamespaceAware="false">     
[*]     
[*]       <!-- SingleSignOn valve, share authentication between web applications      
[*]
            Documentation at: /docs/config/valve.html -->     
[*]
       <!--    
[*]       <Valve className="org.apache.catalina.authenticator.SingleSignOn" />    
[*]       -->     
[*]     
[*]       <!-- Access log processes all example.      
[*]
            Documentation at: /docs/config/valve.html -->     
[*]       <!--      
[*]
       <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"        
[*]
              prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>     
[*]
       -->     
[*]     
[*]
     </Host>     
[*]
   </Engine>  



   <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">   
<!--For clustering, please take a look at documentation at:   
/docs/cluster-howto.html(simple how to)   
/docs/config/cluster.html (reference documentation) -->

<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"      
port="45564"      
frequency="500"      
dropTime="3000"/>      
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"      
address="auto"      
port="5001"      
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>


<!-- The request dumper valve dumps useful debugging information about   
the request and response data received and sent by Tomcat.   
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
-->
<!-- This Realm uses the UserDatabase configured in the global JNDI   
resources under the key "UserDatabase".Any edits   
that are performed against this UserDatabase are immediately   
available for use by the Realm.-->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<!-- Define the default virtual host   
Note: XML Schema validation will not work with Xerces 2.2.   
-->
<Host name="localhost"appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- SingleSignOn valve, share authentication between web applications   
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.   
Documentation at: /docs/config/valve.html -->
<!--   
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"   
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
-->
</Host>
</Engine>
  

2.打开Apache下的conf\httpd.conf文件,打开注释:

Html代码





[*]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    



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
  
在文件末尾添加:

Html代码





[*]ProxyRequests Off         
[*]
<Proxy balancer://cluster>          
[*]
    BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1     
[*]
    BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2     
[*]
</Proxy>     



ProxyRequests Off      
<Proxy balancer://cluster>      
BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1
BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2
</Proxy>   
  
配置VirtualHost:

Html代码





[*]<VirtualHost *:80>         
[*]         ServerAdmin test@126.com         
[*]
         ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On         
[*]         ProxyPassReverse / balancer://cluster/       
[*]         ServerName www.mytest.com      
[*]         ServerAlias mytest.com        
[*]
</VirtualHost>     



<VirtualHost *:80>      
ServerAdmin test@126.com      
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On      
ProxyPassReverse / balancer://cluster/   
ServerName www.mytest.com   
ServerAlias mytest.com   
</VirtualHost>   
  
在应用程序的web.xml结尾加入:

Html代码





[*]<distributable/>    



<distributable/>

  
运行http://www.mytest.com,从tomcat日志可看出均衡和集群都起了作用,以上配置在WinXP +  Apache 2.2.8 + tomcat6上测试通过!
页: [1]
查看完整版本: Apache 2.2.x+Tomcat6集群配置备忘