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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章