Apache server结合Tomcat配置集群与负载均衡

【摘要】随着Apacheserver的版本更新,目前常用的集群以及负载均衡的配置有两种,一种是用mod_jk来处理的,另一种是用Apache server自己的原生模块来实现,下面就分别介绍这两种方法

阅读方法:可以只读【必读】内容

本文所使用的相关内容版本如下:( 打包下载 )

l  Apache server 2.4

l  Apache Tomcat 8.0.26

l  mod_jk 2.0.55

1.    配置Tomcat

【必读】进入tomcat/config目录下,编辑server.xml文件,打开下面两句的注释,并注释或删除原来的<Engine>头标签

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

<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster" />

 

【选读】官网提供的Cluster标签内容如下,其实没必要,上面的一句就可以满足大部分需求了

【官网内容】

       <ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"

                channelSendOptions="8">

 

         <ManagerclassName="org.apache.catalina.ha.session.DeltaManager"

                   expireSessionsOnShutdown="false"

                  notifyListenersOnReplication="true"/>

 

         <ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">

           <MembershipclassName="org.apache.catalina.tribes.membership.McastService"

                       address="228.0.0.4"

                        port="45564"

                       frequency="500"

                       dropTime="3000"/>

           <ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"

                      address="auto"

                      port="4000"

                      autoBind="100"

                     selectorTimeout="5000"

                     maxThreads="6"/>

 

           <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">

              <TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

           </Sender>

           <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

            <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

         </Channel>

 

         <ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"

                 filter=""/>

         <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

 

         <DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"

                   tempDir="/tmp/war-temp/"

                   deployDir="/tmp/war-deploy/"

                    watchDir="/tmp/war-listen/"

                   watchEnabled="false"/>

 

         <ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>

       </Cluster>

2.    mod_jk配置方法

【必读】

步骤:(apache server 根目录)

1.      将下载的mod_jk.so放到modules目录下

2.      在conf目录中创建mod_jk.conf文件

【mod_jk_conf】

LoadModulejk_module modules/mod_jk.so
JkWorkersFileconf/workers.properties
JkMount/* controller

3.      在conf目录中创建workers.properties文件

【workers.properties】

worker.list= controller,tomcat1,tomcat2
#========tomcat1========
worker.tomcat1.port=8009
worker.tomcat1.host=192.168.2.2
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#========tomcat2========
worker.tomcat2.port=8009
worker.tomcat2.host=192.168.2.3
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=true

【释义】

tomcat1,tomcat2—— 还记得那个server.xml中的jvmRoute的名字,就是她

worker.tomcat1.port—— server.xml中的<Connector port="8009"protocol="AJP/1.3" redirectPort="8443" />

worker.tomcat1.host—— 服务器IP

worker.tomcat1.lbfactor—— 负载均衡的权重值

worker.controller.sticky_session—— 粘性属性(解释起来相当麻烦,就是一条路跑到黑。。。)

4.      修改httpd.conf文件

在最下面增加内容 Includeconf/mod_jk.conf

5.      安装启动apache server服务

以管理员身份运行CMD,进入Apacheserver的bin目录运行:(其中apacheServerName是服务名称,可随便定义)

httpd.exe –k install –n “apacheServerName”
net start apacheServerName

如果没报错,恭喜你,差不多了,有错误回头查一下看看哪儿有笔误

 

3.    原生配置方法

【必读】

步骤:(apache server 根目录)

1.      修改conf/httpd.conf

打开下面几个内容的注释:

LoadModule proxy_modulemodules/mod_proxy.so

LoadModule proxy_ajp_modulemodules/mod_proxy_ajp.so

LoadModule proxy_balancer_modulemodules/mod_proxy_balancer.so

LoadModule proxy_connect_modulemodules/mod_proxy_connect.so

LoadModule proxy_ftp_modulemodules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule lbmethod_byrequests_modulemodules/mod_lbmethod_byrequests.so

LoadModule slotmem_shm_modulemodules/mod_slotmem_shm.so

在最下面添加:

<IfModule proxy_module>
   Include conf/extra/httpd-vhosts.conf
</IfModule>

2.      修改conf/extra/httpd-vhosts.conf

Ctrl + A –> delete然后添加:

<VirtualHost *:80> 
          ServerAdmin [email][email protected][/email] 
          ServerName localhost
          ServerAlias localhost 
          ProxyPass / balancer://ibscluster/stickysession=JSESSIONID nofailover=Off 
          ProxyPassReverse / balancer://ibscluster/ 
    ErrorLog "logs/error.log"
    CustomLog "logs/access.log" common
          <Proxy balancer://ibscluster>
                   BalancerMemberajp://192.168.2.2:8009 loadfactor=1 route=tomcat1
                   BalancerMemberajp://192.168.2.3:8009 loadfactor=1 route=tomcat2
ProxySet lbmethod=byrequests
          </Proxy>
</VirtualHost>

【注释】

stickysession=JSESSIONID —— 共享session(如果服务不在一个主机上,然并卵)

ajp://192.168.2.2:8009 —— 通过tomcat的ajp所在端口8009来进行连接

route=tomcat1 —— 还记得那个server.xml中的jvmRoute的名字,还是她

loadfactor —— 负载均衡权重

lbmethod —— 负载均衡策略(使用对应策略要打开对应的mod注释)

     lbmethod=byrequests按照请求次数均衡(默认) 

     lbmethod=bytraffic 按照流量均衡 

     lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)


3.      安装启动apacheserver服务

以管理员身份运行CMD,进入Apacheserver的bin目录运行:(其中apacheServerName是服务名称,可随便定义)

httpd.exe –k install –n “apacheServerName”
net start apacheServerName


发布了64 篇原创文章 · 获赞 63 · 访问量 26万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章