閱讀933 返回首頁    go 阿裏雲 go 技術社區[雲棲]


linux 平台 apache +tomcat 集群配置

目標:在同一台Linux服務器上安裝 apache 和 兩個 tomcat 的集群,tomcat解析所有頁麵和靜態文件, apache 僅作代理,負責負載均衡。

 

1. 下載,安裝 Apache

 

地址:https://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.19.tar.gz

 

Shell代碼  收藏代碼
  1. cd /usr/local/src/apache2 #進入下載目錄  
  2.   
  3. wget https://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.19.tar.gz #下載源碼  
  4.   
  5. tar -zxvf httpd-2.2.19.tar.gz #解壓  
  6.   
  7. cd httpd-2.2.19 #進入解壓後目錄  
  8.   
  9. ./configure --prefix=/usr/local/apache2  #檢測環境  
  10.   
  11. make #編譯  
  12.   
  13. make install #安裝  

 

以上將軟件安裝在了 /usr/local/apache2 目錄

 

2. 下載,安裝 mod_jk 

 

mod_jk 是用來連接 apache 和 tomcat 的模塊

 

下載地址:https://archive.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.31/tomcat-connectors-1.2.31-src.tar.gz

Java代碼  收藏代碼
  1. wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.31/tomcat-connectors-1.2.31-src.tar.gz  
  2.   
  3. tar -zxvf tomcat-connectors-1.2.31-src.tar.gz  
  4.   
  5. cd tomcat-connectors-1.2.31-src  
  6.   
  7. cd native  
  8.   
  9. ./configure --with-apxs=/usr/local/apache2/bin/apxs   
  10. #with-apxs 是必選參數,用於指定apache服務器的apxs程序路徑,在apache的bin目錄下  
  11.   
  12. make #編譯  

 

我們需要的是mod_jk.so模塊,所以不需要安裝,經過以上步驟後,可以在 native/apache-2.0 目錄下找到。

 

然後將 mod_jk.so 複製到 /usr/local/apache2/modules 目錄下。

 

Shell代碼  收藏代碼
  1. cd tomcat-2.0  
  2.   
  3. cp mod_jk.so /usr/local/apache2/modules  
 

3. 下載,安裝 Tomcat

 

下載地址:https://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.19/bin/apache-tomcat-7.0.19.tar.gz

 

Shell代碼  收藏代碼
  1. cd /usr/local/tomcat  
  2.   
  3. wget https://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.19/bin/apache-tomcat-7.0.19.tar.gz  
  4.   
  5. tar -zxvf apache-tomcat-7.0.19.tar.gz  
  6.   
  7. mv apache-tomcat-7.0.19  apache-tomcat-7.0.19-1 #修改文件夾名字  
  8.   
  9. cp apache-tomcat-7.0.19-1 apache-tomcat-7.0.19-2 #複製一份,用於集群  

 

因為,tomcat 是純Java 編寫,所以解壓即可,無需安裝。 當然前提是已經安裝  JDK 才行。

 

這樣 tomcat 目錄下,就有兩個 tomcat 服務器。 apache-tomcat-7.0.19-1 和 apache-tomcat-7.0.19-2 一下簡稱為 tomcat1, tomcat2.

 

 

4. 將連個 tomcat 服務器 同時啟動,加載同一個Web應用

 

將Web應用的根目錄放在:/var/webapp/Test/WebRoot 目錄下

 

在 Tomcat1,Tomcat2 的 conf/Catalina/localhost 目錄下分別創建文件 ROOT.xml

 

內容如下:

然後就可啟動 Tomcat 了

 

進入 tomcat 的 bin 目錄 執行: ./startup.sh

 

兩個Tomcat同時啟動時,會報錯。 因為端口被占用。 所以要修改 server.xml

 

在 Tomcat2 的 server.xml 中修改。 要修改的端口號有三個

 




分別改為: 9005, 9080, 9009 後,就可以同時啟動兩個Tomcat了

 

此時兩個Tomcat都可以單獨訪問了。

 

5. 通過 Apache 將兩個Tomcat集群

 

修改 Apache 目錄下 conf/httpd.conf 配置文件, 在文件的末尾增加以下內容

 


994行:在 httpd 中載入 mod_jk 模塊

 

997行:指定負載均衡的配置文件為  conf/worker.propeties (與 httpd.conf 在同一個文件夾)

998行:指定mod_jk模塊的 日誌文件位置

999行:日誌的級別

 

1000行:表示將 訪問路徑以 .jsp 結尾的請求,轉交為Tomcat處理

1001行:表示將 訪問路徑以 .do 結尾的請求,轉交為Tomcat處理

1002行:表示將 訪問路徑以 .action結尾的請求,轉交為Tomcat處理

 

1003行:表示將 所有的訪問請求都轉交為Tomcat處理

 

 

下麵是負載均衡的配置: worker.properties 內容。 關於此文件的全部設定選項和說明在剛剛解壓的 mod_jk 的 conf 文件夾下麵可以找到  worker.properties.  該文件中有詳細說明

 

Conf代碼  收藏代碼
  1. worker.list=loadbalancer                        #定義負載均衡的名稱  
  2. worker.loadbalancer.type=lb                     #定義負載均衡的類型,為lb  
  3. worker.loadbalancer.error_escalation_time=0     #切換錯誤狀態時間  
  4. worker.loadbalancer.max_reply_timeouts=10  
  5. worker.loadbalancer.sticky_session=1            #1代表為true,0代表為false。  
  6. #worker.loadbalancer.sticky_session_force=true  
  7.    
  8. worker.loadbalancer.balance_workers=lb1,lb2 #負載均衡的工作者名稱  
  9.   
  10. worker.lb1.reference=worker.template    #lb1參考worker.template工作模板  
  11. worker.lb1.host=localhost           #lb1的ip地址  
  12. worker.lb1.port=8009                #lb1端口,這裏是ajp端口,不是網站端口  
  13. worker.lb1.activation=A                 #A:active模式 D:sticky模式 S:不使用  
  14.   
  15. worker.lb2.reference=worker.template  
  16. worker.lb2.host=localhost  
  17. worker.lb2.port=9009  
  18. worker.lb2.activation=A  
  19.   
  20. worker.template.type=ajp13                  #上麵lb1,lb2參考下麵的值worker.template,協議ajp13  
  21. worker.template.socket_connect_timeout=5000 #套接字連接超時為5000毫秒,默認為0  
  22. worker.template.socket_keepalive=true           #開啟保持為真,默認為false  
  23. worker.template.ping_mode=A                 #使用cping/cpong模式,有C,P,I,A四個模式。A全選  
  24. worker.template.ping_timeout=10000          #探測cping/cpong超時間默認10000毫秒  
  25. worker.template.connection_pool_minsize=0       #連接池關閉最小時間  
  26. worker.template.connection_pool_timeout=600 #連接池600秒  
  27. worker.template.reply_timeout=300000            #答複超時300000毫秒  
  28. worker.template.recovery_options=3          #重試次數  

 

下麵是網上找的關於 worker.loadbalancer.sticky_session 這個選項網上解釋


1=true:假如A服務器接受了請求,以後的請求都會繼續發給A服務器,B接受了請求一直發給B服務器。會話不會輪詢,session保持很好,建議使用。

0=false:假如A服務器接受了請求,按F5再次刷新結果到了B服務器,再按一次又到了C服務器。會話會輪詢,session保持不好不穩定,session複製給所有服務器,但是立馬就斷了。所以使用true比較多,我這裏也設置了1。


總結:worker.balancer.sticky_session請求是發送給一台服務器(true),還是發送給多台服務器(false)。Session複製隻與tomcat集群配置有關,與這個sticky無關。但是sticky會影響session複製。如果這個選項為真那麼session保持良好,如果為假那麼需要所有服務器複製session所以不穩定。

 

6. 修改Tomcat配置的 server.xml

 

Tomcat1 的 server.xml

Xml代碼  收藏代碼
  1. <Engine name="Catalina" defaultHost="localhost">  
  2.   
  3. 修改為:  
  4.   
  5. <Engine name="Catalina" defaultHost="localhost" jvmRoute="lb1">  

 

Tomcat2  的 server.xml

Xml代碼  收藏代碼
  1. <Engine name="Catalina" defaultHost="localhost">  
  2.   
  3. 修改為:  
  4.   
  5. <Engine name="Catalina" defaultHost="localhost" jvmRoute="lb2">  

 

 jvmRoute 的值,需要與 worker.properties 中的對應的Tomcat名字設置一致

 

以上步驟完成後,啟動 Tomcat1, Tomcat2, Aapche 就完成集群了。


來源:https://pengranxiang.iteye.com/blog/1135072

最後更新:2017-04-02 16:48:11

  上一篇:go Android中進行圖像壓縮和縮放
  下一篇:go Android以最省內存的方式讀取本地資源的方法