Apache 负载均衡+Tomcat集群

花了一下午的时间,研究了一下Apache 负载均衡+Tomcat集群的问题,至于原理高手解释下,我是照葫芦画瓢!现在与大家分享一下

 

一、本机环境

1.Windows 7 64位操作系统

2.java版本 "1.6.0_20"

3.Apache安装包httpd-2.2.21-win32-x86-no_ssl.msi,默认安装

4.tomcat压缩包(apache-tomcat-6.0.24.zip)

5.在一台机器上进行的

 

二、配置

1.前提是Apache安装正确,启动正常

 

2.解压缩多个tomcat,例如d:\tomcat_01,d:\tomcat_02

 

3.配置httpd.conf文件

 

找到如下信息,并进行修改

 

Html代码   收藏代码
  1. #LoadModule proxy_module modules/mod_proxy.so  
  2. #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so  
  3. #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so  
  4. #LoadModule proxy_connect_module modules/mod_proxy_connect.so  
  5. #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so  
  6. #LoadModule proxy_http_module modules/mod_proxy_http.so  
Html代码   收藏代码
  1. #Include conf/extra/httpd-vhosts.conf  

 

 去掉注释

 

在httpd.conf最后加上如下代码

 

Html代码   收藏代码
  1. ProxyRequests Off  
  2. <proxy balancer://cluster>  
  3.     BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1  
  4.     BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2  
  5. </proxy>  

 

上面的BalancerMember成员是配置tomcat集群的 

 

4.配置httpd-vhosts.conf文件

 

找到如下代码

 

Html代码   收藏代码
  1. <VirtualHost *:80>  
  2.     ServerAdmin [email protected]  
  3.     DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host.sm.com"  
  4.    ServerName dummy-host.sm.com  
  5.     ServerAlias www.dummy-host.sm.com  
  6.     ErrorLog "logs/dummy-host.sm.com-error.log"  
  7.     CustomLog "logs/dummy-host.sm.com-access.log" common  
  8. </VirtualHost>  
  9.   
  10. <VirtualHost *:80>  
  11.     ServerAdmin [email protected]  
  12.     DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host2.sm.com"  
  13.     ServerName dummy-host2.sm.com  
  14.     ErrorLog "logs/dummy-host2.sm.com-error.log"  
  15.     CustomLog "logs/dummy-host2.sm.com-access.log" common  
  16. </VirtualHost>  

 

 找到这些代码删除或者注释掉

 

在httpd-vhosts.conf文件最后加入如下代码

 

Html代码   收藏代码
  1. <VirtualHost *:80>  
  2.     ServerAdmin [email protected]  
  3.     ServerName localhost  
  4.     ServerAlias localhost  
  5.     ProxyPass / balancer://cluster/  
  6.     ProxyPassReverse / balancer://cluster/  
  7.     ErrorLog "logs/dummy-host2.sm.com-error.log"  
  8.     CustomLog "logs/dummy-host2.sm.com-access.log" common  
  9. </VirtualHost>  

域名与路径根据自己需要配置

 

 

5.配置tomcat,修改conf/server.xml文件

说明,我只用了两个tomcat集群

修改第二个tomcat(两个tomcat任意设置一个)

 

 

Html代码   收藏代码
  1. <Server port="8005" shutdown="SHUTDOWN">  
  2.   
  3. 将8005改为9005,防止与第一个冲突  
Html代码   收藏代码
  1. <Connector port="8080" protocol="HTTP/1.1"   
  2.                connectionTimeout="20000"   
  3.                redirectPort="8443" />  
  4.   
  5. 将8080改为9080,将8443改为9443  
Html代码   收藏代码
  1. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  
  2. 将8009改为9009,将8443,改为9443  

 

两个tomcat均需要做如下改动

 

Java代码   收藏代码
  1. 找到  
  2. <Engine name="Catalina" defaultHost="localhost"  >  
  3. 改成  
  4. <Engine name="Catalina" defaultHost="localhost"  jvmRoute="jvm2">  
  5.   
  6. 并在<Engine name="."..></Engine>标签中加上如下代码  
  7.   
  8.     <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">  
  9.         <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false"   
  10.         notifyListenersOnReplication="true" mapSendOptions="6"/>  
  11.         <Channel className="org.apache.catalina.tribes.group.GroupChannel">  
  12.             <Membership className="org.apache.catalina.tribes.membership.McastService"  
  13.                 address="228.0.0.4" port="45565" frequency="500" dropTime="3000"/>  
  14.             <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"  
  15.                 address="auto" port="5002" selectorTimeout="100" maxThreads="6"/>  
  16.             <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">  
  17.                 <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>  
  18.             </Sender>  
  19.             <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>  
  20.             <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>  
  21.             <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>  
  22.         </Channel>  
  23.         <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"  
  24.             filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>  
  25.         <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"  
  26.             tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/>  
  27.         <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>  
  28.     </Cluster>  

 

第一个tomcat配置为<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

Java代码   收藏代码
  1. 改动Membership port 的值与另一个设置为不同  
Java代码   收藏代码
  1. 改动Receiver port的值与另一个设置为不同  

为了防止冲突

 

6.所有配置已经完毕,我们现在可以进行测试

 

7.为了让效果更加明显,我们改动\tomcat_01\webapps\ROOT\index.html,在<body></dody>中加上<h1>tomcat1</h1>

   改动\tomcat_02\webapps\ROOT\index.html,在<body></dody>中加上<h1>tomcat2</h1>

 

8.在浏览器中输入http://localhost,看看效果吧!刷新一下会有意外惊喜


你可能感兴趣的:(Apache 负载均衡+Tomcat集群)