一:安装下载  上apache官网下载apache最新版本的apache版本就行 这里用的是最新的apache2.4.18 解压到任意盘后在CMD中安装  比如到D:\apache\Apache24\bin下打命令 httpd -k install  


之后上tomcat里下载JK JK就是tomcat给HTTP服务的应用,之后解压在D:\apache\Apache24\modules中即可 


之后需要安装tomcat了 复制N份(N=你需要负载的多少)需要注意的是 tomcat 版本需要一致 不要一个是tomcat6 一个是tomcat7


二:配置

1.先配置apache配置文件 D:\apache\Apache24\conf (这是我的路径)下的httpd.conf 


先在LoadModule加载最下面加上加载下载的JK LoadModule jk_module modules/mod_jk.so 


之后将LoadModule rewrite_module modules/mod_rewrite.so前面#去掉。


下一步在把

 <IfModule jk_module>

  JkWorkersFile conf/workers.properties

  JkMountFile conf/uriworkermap.properties

  JkMount /* controller

  JkLogFile logs/mod_jk.log   #这条和下面这条可以取消删掉

  JkLogLevel warn

  </IfModule>


加到配置最下面即可

并且把apache这些配置打开

AcceptFilter http none

AcceptFilter https none

EnableSendfile Off 

EnableMMAP off


2.在D:\apache\Apache24\conf 新建一个workers.properties文件

  1. worker.list = controller

  2. #========tomcat1========  

  3. worker.tomcat1.port=8009  #指定tomcat2服务器AJP的端口,默认为8009

  4. worker.tomcat1.host=localhost #指定tomcat2服务器IP或域名  

  5. worker.tomcat1.type=ajp13  #指定tomcat2与apache AJP通讯协议  

  6. worker.tomcat1.lbfactor=1   #指定负载平衡因数,只有启用了负载平衡才有用.  

  7. #========tomcat2========  

  8. worker.tomcat2.port=8010  

  9. worker.tomcat2.host=172.168.1.31  #也可以用远程

  10. worker.tomcat2.type=ajp13  

  11. worker.tomcat2.lbfactor=1  

  12.    

  13. #========controller负载平衡控制器========  

  14. worker.controller.type=lb                          #指定controller类型  

  15. worker.controller.balanced_workers=tomcat1,tomcat2 #指定负载平衡的tomcat  

  16. worker.controller.sticky_session=true              #指定是否粘性session 

  17. worker.controller.sticky_session_force=false   

  18. worker.connection_pool_size=3000  

  19. worker.connection_pool_minsize=50  

  20. worker.connection_pool_timeout=50000  

  21. # session配置说明:  

  22. #当sticky_session,sticky_session_force都为true时不复制session,  

  23. #sticky_session_force=false指集群中某台服务器多次请求没有响应,则转发到其它服务器处理,  

  24. #sticky_session=false不使用粘性session,同时配置不复制session时,注意转发请求后可能会找不到原来的session.  



在D:\apache\Apache24\conf 新建一个uriworkermap.properties文件

/*=controller     !/*.html=controller




3.修改每个tomcat的conf/server.xml

  先修改<Server port="10934" shutdown="SHUTDOWN"> shutdown的端口每一个改成不一样的 否则     tomcat不能同时开启


  之后修改tomcat端口

   <Connector port="10922" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" URIEncoding="utf-8" />

  使每个tomcat端口不一致并且没有占用

  

  <Connector port="10888" protocol="AJP/1.3" redirectPort="8443" />之后把ajp端口修改成与workers中的端口一致


   下一步把

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> 注释打开 把tomcat1自己的起的名填上 并且把他下面的那条注释或删除

   <Engine name="Catalina" defaultHost="localhost" >


并且把下面的 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>注释打开就是可以打开简单的Tcp集群;


tomcat最后一步 在

D:\apache\apache-tomcat-11\conf\Catalina\localhost 下建立目录连接本地项目demo.xml

<?xml version='1.0' encoding='utf-8'?>

<Context docBase="D:\apache\wx" reloadable="true" path="/wx" />



4.修改web应用里面WEB-INF目录下的web.xml文件,加入标签

  <distributable/>
  直接加在</web-app>之前就可以了   因为加上这个就是可分配的

之后就大功告成。


补充 session共享 在不同局域网 中apache可能也共享 可以配置tomcat下的 server.xml 中的

 <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="127.0.0.1"

                     port="4001"             //每个tomcat端口不同

                     autoBind="100"

                     selectorTimeout="5000"

                     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=".*.gif|.*.js|.*.jpeg|.*.jpg|.*.png|.*.htm|.*.html|.*.css|.*.txt"/>

        <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>

这样就可以解决了