apache + tomcat 负载均衡 和 集群

一:基本概念      http://webdev.csdn.net/page/9fa31cf2-4f5d-4b59-a51c-d135883d1dbb

                                http://www.theserverside.com/tt/knowledgecenter/knowledgecenter.tss?l=LoadBalancingTomcatApache

1.1 集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
2. 负载均衡(Load Balance):先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。如一个提供Web服务的集群,对外界来看是一个大Web服务器。不过集群的节点也可以单独提供服务。

 

二: 实际操作步骤

2.1  软件环境

      jdk:  1.4.2_17           tomcat:  5.0.28      apache:    2.0.47      mod_jk:   1.2.27        windowXp

 

2.2 同时启动两个tomcat 

     2.2.1  按照默认设置安装两个tomcat1,tomcat2于两个不同目录  (推荐两个tomcat的folder名包括tomcat的访问端口,如5.0.8082)

    2.2.2   修改三个设置端口的地方 (防止各个tomcat所占用的端口产生冲突)

                2.2.2.1   <Server port="8005" shutdown="SHUTDOWN" debug="0">   ---------〉   <Server port="8007" shutdown="SHUTDOWN" debug="0">

                2.2.2.2   <Connector  port="8080"  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />              -------------------〉

               <Connector  port="8083"    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />

               2.2.2.3        <Connector port="8009"   enableLookups="false" redirectPort="8443" debug="0"  protocol="AJP/1.3" />
              -------------〉     <Connector port="8011"  enableLookups="false" redirectPort="8443" debug="0"  protocol="AJP/1.3" />

三: 配置apache加载mod_jk.so

          3.1  在%apache%/conf/httpd.conf  的适当位置添加以下代码,使其启动时加载mod_jk的配置:

                  Include conf/mod_jk.conf     

          3.2  %apache%/conf/mod_jk.conf 的内容列举如下:

                 #加载模块mod_jk.so

                  LoadModule jk_module modules/mod_jk.so           
                 #加载另一配置文件,   设置相关to
mcat的配置信息及如何分配apache转出的请求

                 JkWorkersFile conf/workers.properties   

                  # 设置哪些请求需要转发给ajp进而递给相关tomcat处理
                  JkMount /*.jsp controller 

           3.3 %apache%/conf/workers.properties 的内容列举:

                 #server 列表   
                 worker.list = controller,tomcat1,tomcat2

                 #========tomcat1========
                 #ajp13 端口号,在tomcat下server.xml配置,默认8009   
                 worker.tomcat1.port=8011
                 #tomcat的主机地址,如不为本机,请填写ip地址
                 worker.tomcat1.host=localhost   
                 worker.tomcat1.type=ajp13   
                 #server的加权比重,值越高,分得的请求越多   
                 worker.tomcat1.lbfactor = 1  

                 #========tomcat2========   
                 #ajp13 端口号,在tomcat下server.xml配置,默认8009   
                 worker.tomcat2.port=8012       
                 #tomcat的主机地址,如不为本机,请填写ip地址  
                 worker.tomcat2.host=localhost   
                 worker.tomcat2.type=ajp13   
                 #server的加权比重,值越高,分得的请求越多   
                 worker.tomcat2.lbfactor = 2  

                 #========controller,负载均衡控制器========   
                 worker.controller.type=lb   
                 #指定分担请求的tomcat   
                 worker.controller.balanced_workers=tomcat1,tomcat2   
                 worker.controller.sticky_session=1 

 

四:  设置tomcat和apache的虚拟目录

          4.1  在两个tomcat中添加相同的虚拟目录指向同一个project

                  在%tomcat1%/conf/Catalina/localhost  和   %tomcat2%/conf/Catalina/localhost  中创建同一个文件  AjaxStart.xml,内容如下

                  <Context path="/AjaxStart" reloadable="true"  docBase="E:/projects/AjaxStart/build" ></Context>

 

         4.2  在apache中设置虚拟目录指向刚才tomcat设置的虚拟目录指向的project

                 编辑%apache%/conf/httpd.conf,  在适当位置添加以下代码

                 Alias /AjaxStart "E:/projects/AjaxStart/build/"  
                 <Directory "E:/projects/AjaxStart/build">          
                     Options Indexes MultiViews
                     AllowOverride None
                     Order allow,deny
                     Allow from all
                 </Directory>

 

五 集群设置,各个tomcat共享session    http://www.blogjava.net/itstarting/archive/2008/03/03/102335.html

                 5.1  在project 的  WEB-INF/web.xml 中添加以下代码

                         <web-app>   ------------>        <web-app>     <distributable />

 

                  5.2  修改%tomcat1%和%tomcat2%的server.xml, 把它们默认的cluster设置(默认已被注销),改为以下(注意两个tcpListenPort="4002"  不能占相同端口)

  1. <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
  2. managerClassName="org.apache.catalina.cluster.session.DeltaManager"
  3. expireSessionsOnShutdown="false"
  4. useDirtyFlag="true"
  5. notifyListenersOnReplication="true">
  6. <Membership
  7. className="org.apache.catalina.cluster.mcast.McastService"
  8. mcastClusterDomain="catalina"
  9. mcastAddr="228.0.0.4"
  10. mcastPort="45564"
  11. mcastBindAddress="127.0.0.1"
  12. mcastFrequency="500"
  13. mcastDropTime="3000"/>
  14. <Receiver
  15. className="org.apache.catalina.cluster.tcp.ReplicationListener"
  16. tcpListenAddress="127.0.0.1"
  17. tcpListenPort="4002"
  18. tcpSelectorTimeout="100"
  19. tcpThreadCount="6"/>
  20. <Sender
  21. className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
  22. replicationMode="pooled"
  23. ackTimeout="15000"
  24. waitForAck="true"/>
  25. <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
  26. filter=".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;"/>
  27. <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
  28. tempDir="/tmp/war-temp/"
  29. deployDir="/tmp/war-deploy/"
  30. watchDir="/tmp/war-listen/"
  31. watchEnabled="false"/>
  32. <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
  33. </Cluster> 

 

测试apache的配置是否正确,并提供排错的提示

"C:/Program Files/Apache Group/Apache2/bin/Apache.exe" -t                    

 

 

 

 

需要進一步總結的內容

注意关于tomcat 和 apache 之间各自的线程数量的问题

http://blog.hnce.net/post/315.html     (apache and tomcat 三種鏈接方式)--------查看jkstatus,集群運行狀況

http://www.goneeded.com/javas/articles/20070816/a01231457565.html    compare mod_proxy and mod_jk

 

mysql cluster

http://blogger.org.cn/blog/more.asp?name=lhwork&id=32442

http://blogger.org.cn/blog/more.asp?name=lhwork&id=32441

 

 

http://blogger.org.cn/blog/more.asp?name=lhwork&id=22685   apache tomcat 負載平衡

http://www.blogjava.net/Unmi/archive/2007/09/18/146308.html    结合Apache和Tomcat实现集群和负载均衡

http://middleware.csdn.net/page/6fc0bb4c-176f-486a-96fe-0524db9426a1

http://webdev.csdn.net/page/172af2d8-152b-49df-9763-d76bb5eb07d7    linux 服務器網絡負載均衡的實現

 

 

                 

 

 

有用博客

http://blogger.org.cn/blog/blog.asp?name=lhwork

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值