linux 平台 apache +tomcat 集群配置
目標:在同一台Linux服務器上安裝 apache 和 兩個 tomcat 的集群,tomcat解析所有頁麵和靜態文件, apache 僅作代理,負責負載均衡。
1. 下載,安裝 Apache
地址:https://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.19.tar.gz
- cd /usr/local/src/apache2 #進入下載目錄
- wget https://mirror.bjtu.edu.cn/apache//httpd/httpd-2.2.19.tar.gz #下載源碼
- tar -zxvf httpd-2.2.19.tar.gz #解壓
- cd httpd-2.2.19 #進入解壓後目錄
- ./configure --prefix=/usr/local/apache2 #檢測環境
- make #編譯
- 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
- wget http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.31/tomcat-connectors-1.2.31-src.tar.gz
- tar -zxvf tomcat-connectors-1.2.31-src.tar.gz
- cd tomcat-connectors-1.2.31-src
- cd native
- ./configure --with-apxs=/usr/local/apache2/bin/apxs
- #with-apxs 是必選參數,用於指定apache服務器的apxs程序路徑,在apache的bin目錄下
- make #編譯
我們需要的是mod_jk.so模塊,所以不需要安裝,經過以上步驟後,可以在 native/apache-2.0 目錄下找到。
然後將 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
- cd /usr/local/tomcat
- wget https://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.19/bin/apache-tomcat-7.0.19.tar.gz
- tar -zxvf apache-tomcat-7.0.19.tar.gz
- mv apache-tomcat-7.0.19 apache-tomcat-7.0.19-1 #修改文件夾名字
- 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. 該文件中有詳細說明
- worker.list=loadbalancer #定義負載均衡的名稱
- worker.loadbalancer.type=lb #定義負載均衡的類型,為lb
- worker.loadbalancer.error_escalation_time=0 #切換錯誤狀態時間
- worker.loadbalancer.max_reply_timeouts=10
- worker.loadbalancer.sticky_session=1 #1代表為true,0代表為false。
- #worker.loadbalancer.sticky_session_force=true
- worker.loadbalancer.balance_workers=lb1,lb2 #負載均衡的工作者名稱
- worker.lb1.reference=worker.template #lb1參考worker.template工作模板
- worker.lb1.host=localhost #lb1的ip地址
- worker.lb1.port=8009 #lb1端口,這裏是ajp端口,不是網站端口
- worker.lb1.activation=A #A:active模式 D:sticky模式 S:不使用
- worker.lb2.reference=worker.template
- worker.lb2.host=localhost
- worker.lb2.port=9009
- worker.lb2.activation=A
- worker.template.type=ajp13 #上麵lb1,lb2參考下麵的值worker.template,協議ajp13
- worker.template.socket_connect_timeout=5000 #套接字連接超時為5000毫秒,默認為0
- worker.template.socket_keepalive=true #開啟保持為真,默認為false
- worker.template.ping_mode=A #使用cping/cpong模式,有C,P,I,A四個模式。A全選
- worker.template.ping_timeout=10000 #探測cping/cpong超時間默認10000毫秒
- worker.template.connection_pool_minsize=0 #連接池關閉最小時間
- worker.template.connection_pool_timeout=600 #連接池600秒
- worker.template.reply_timeout=300000 #答複超時300000毫秒
- 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
- <Engine name="Catalina" defaultHost="localhost">
- 修改為:
- <Engine name="Catalina" defaultHost="localhost" jvmRoute="lb1">
Tomcat2 的 server.xml
- <Engine name="Catalina" defaultHost="localhost">
- 修改為:
- <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
上一篇:
Android中進行圖像壓縮和縮放
下一篇:
Android以最省內存的方式讀取本地資源的方法
屌絲自製路由器 破校園網絡封鎖
這些年,喬布斯和庫克道過的歉
阿裏雲學生雲服務器ECS優惠購買低至9.9元
stl-map stl-pair
System.Runtime.InteropServices.COMException (0x8004E00F): COM+ 無法與 Microsoft 分布式事務協調程序交談 (異常來自 HRESU
jQuery最佳實踐
WebService——通過契約優先開發webservice
計算機硬盤大小轉換(B,KB,MB,GB,TB,PB之間的大小轉換)
Asp.net上傳圖片同時生成文字水印圖,圖片水印圖,縮略圖
《資本說》極客幫創始人蔣濤(一)