Apache加Tomcat的负载均衡以及集群配置

Tomcat的集群加Apache的负载均衡可以通过两种方式实现。第一种:通过mod_jk动态模块;第二种:通过mod_proxy

 

一、通过mod_jk实现

 

1. 环境准备

   Apache 2.2   http://httpd.apache.org/download.cgi

   Tomcat 5.5   http://tomcat.apache.org/download-55.cgi

   mod_jk  http://tomcat.apache.org/connectors-doc/

 

2. 配置tomcat

    可以是一台机器多个tomcat实例,也可以是多个机器,每台机器一个实例。具体根据机器的性能进行规划。下面以同一机器两个实例为例。

修改每个实例的server.xml

 

    实例一:

      <Server port="8006" shutdown="SHUTDOWN">

      ...

      <Connector port="8081" maxHttpHeaderSize="8192"

              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

              enableLookups="false" redirectPort="8443" acceptCount="100"

              connectionTimeout="20000" disableUploadTimeout="true" />

      ...

      <Connector port="8010" 

               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

      ...

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

      ...

      <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"

                 managerClassName="org.apache.catalina.cluster.session.DeltaManager"

                 expireSessionsOnShutdown="false"

                 useDirtyFlag="true"

                 notifyListenersOnReplication="true">

            <Membership 

                className="org.apache.catalina.cluster.mcast.McastService"

                mcastAddr="228.0.0.4"  --广播地址,必须相同

                mcastPort="45564"

                mcastFrequency="500"

                mcastDropTime="3000"/>

            <Receiver 

                className="org.apache.catalina.cluster.tcp.ReplicationListener"

                tcpListenAddress="auto"

                tcpListenPort="4001" --监听端口,每个实例必须不同。

                tcpSelectorTimeout="100"

                tcpThreadCount="6"/>

            <Sender

                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"

                replicationMode="pooled"

                ackTimeout="15000"/>

            <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"

                   filter=".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;"/>

                   

            <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"

                      tempDir="/tmp/war-temp/"

                      deployDir="/tmp/war-deploy/"

                      watchDir="/tmp/war-listen/"

                      watchEnabled="false"/>

                      

            <ClusterListener     

                  className="org.apache.catalina.cluster.session.ClusterSessionListener"/>

     </Cluster>

 

    实例二:

     <Server port="8005" shutdown="SHUTDOWN">

     ...

     <Connector port="8080" maxHttpHeaderSize="8192"

               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" redirectPort="8443" acceptCount="100"

               connectionTimeout="20000" disableUploadTimeout="true" />

     ...

     <Connector port="8009" 

               enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

     ...

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

     ...

     <!-- Include follows if cluster is needed. -->

     <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"

                 managerClassName="org.apache.catalina.cluster.session.DeltaManager"

                 expireSessionsOnShutdown="false"

                 useDirtyFlag="true"

                 notifyListenersOnReplication="true">

            <Membership 

                className="org.apache.catalina.cluster.mcast.McastService"

                mcastAddr="228.0.0.4"

                mcastPort="45564"

                mcastFrequency="500"

                mcastDropTime="3000"/>

            <Receiver 

                className="org.apache.catalina.cluster.tcp.ReplicationListener"

                tcpListenAddress="auto"

                tcpListenPort="4002"

                tcpSelectorTimeout="100"

                tcpThreadCount="6"/>

            <Sender

                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"

                replicationMode="pooled"

                ackTimeout="15000"/>

            <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"

                   filter=".*/.gif;.*/.js;.*/.jpg;.*/.png;.*/.htm;.*/.html;.*/.css;.*/.txt;"/>

                   

            <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"

                      tempDir="/tmp/war-temp/"

                      deployDir="/tmp/war-deploy/"

                      watchDir="/tmp/war-listen/"

                      watchEnabled="false"/>

                      

            <ClusterListener 

                className="org.apache.catalina.cluster.session.ClusterSessionListener"/>

        </Cluster>

 

  2. 配置Apache

      将下载的mod_jk.so复制到Apache安装目录的modules下。修改httpd.conf文件,增加如下部分:

 

       #load mod_jk

       LoadModule jk_module modules/mod_jk.so

       #config mod_jk

       JkWorkersFile conf/workers.properties

       JkLogFile logs/mod_jk.log

       JkLogLevel info

   

       Apacheconfig目录下,新建workers.properties文件,内容如下:

        worker.list=loadbalancer,mystatus

        #first tomcat

        worker.tomcat1.port=8009

        worker.tomcat1.host=localhost

        worker.tomcat1.type=ajp13

        worker.tomcat1.lbfactor=1

        #second tomcat

        worker.tomcat2.port=8010

        worker.tomcat2.host=localhost

        worker.tomcat2.type=ajp13

        worker.tomcat2.lbfactor=1

        #balance worker

        worker.loadbalancer.type=lb

        worker.loadbalancer.balance_workers=tomcat1,tomcat2

        worker.loadbalancer.sticky_session=1

        #balance status

        worker.mystatus.type=status

        worker.mystatus.mount=/user/status/jk

 

   4. 修改Web Applicationweb.xml文件

       web.xml文件中,增加<distributable />

 

   5. 启动tomcatApache

       启动后,通过http://localhost/你的应用程序路径,进行访问。

 

   6. 查看负载均衡状态

       可以通过访问http://localhost/status查看负载均衡相关信息,包括每个服务器的状态。

 

   7. 其他事项

       可以通过Apache下的logs/error.log文件和logs/mod_jk.log文件查看错误信息,

       

二、通过mod_proxy实现

 

   1. 环境准备

   Apache 2.2   http://httpd.apache.org/download.cgi

   Tomcat 5.5   http://tomcat.apache.org/download-55.cgi

   mod_proxy   apache安装完自带

 

   2. 配置Tomcat

      配置方法与mod_jk下相同。

 

   3. 配置Apache

       修改httpd.conf文件,增加如下信息:

       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_http_module modules/mod_proxy_http.so

       ProxyPass / balancer://tomcatcluster/

       <Proxy balancer://tomcatcluster>

          BalancerMember ajp://127.0.0.1:8009 route=tomcat1/

         BalancerMember ajp://127.0.0.1:8010 route=tomcat2/

       </Proxy>

       <!-- balancer manager console -->

       <Location /balancer-manager>

           SetHandler balancer-manager

       </Location>

 

   4. 修改Web Applicationweb.xml文件

       web.xml文件中,增加<distributable />

 

   5. 启动tomcatapache

       启动后,通过http://localhost/你的应用程序路径,进行访问。

 

   6. 查看负载均衡状态

       可以通过访问http://localhost/balancer-manager查看负载均衡相关信息,包括每个服务器的状态。

 

   7. 其他事项

       可以通过Apache下的logs/error.log文件查看错误信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值