茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1672124 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_60D_00164.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2016/7/14 9:49:05



Tomcat負載均衡和集群筆記






liuyun2026上傳於
2012-11-28

|




  T​o​m​c​a​t​負​載​均​衡​和​集​群​筆​記








1 安裝 apache
在 windows 下就不用說了。
在 linux 下,首先下載 apache 安裝包,可能是 httpd-2.2.13.tar.bz2。
運行
 bunzip2 httpd-2.2.13.tar.bz2 

,解壓出 tar 文件 運行
 tar – xvf http-2.2.13.tar

,把文件夾解壓出來切換到 http-2.3.13 目錄,運行
./configure – prefix=目標路徑 --enable-modu les='proxy proxy_ajp proxy_balancer proxy_connect proxy_http '

運行
make

運行
make install apache

就安裝在了目標路徑下面 進入安裝路徑的 bin 下,運行
 ./apachectl – k start

可以啟動 apache
2 使用 proxy 方式進行負載均衡
模塊的加載在 linux 下是需要靜態編譯的,在 windows 下則可以使用動態方式加載。如果是在 linux 下,上面的 步驟就已經把 proxy 模塊加載進來了。在 windos 下,需要進入 apache 安裝路徑 /conf 下,打開 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_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so

無論 windows 還是 linux ,還要打開如下註釋:
Include conf/extra/httpd-vhosts.conf

然後在 conf/extra 目錄下找到 httpd-vhosts.conf 文件,備份一下,增加如下內容:
<VirtualHost *:8000>
ProxyRequests Off
<Proxy balancer://cluster>
BalancerMember ajp://10.8.10.115:8009 loadfactor=1 route=jvm1
BalancerMember ajp://10.8.10.115:9009 loadfactor=1 route=jvm2
</Proxy>
ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=off timeout=5 maxattempts=3
ProxyPassReverse / balancer://cluster/
ErrorLog "logs/study.com-error_log"
CustomLog "logs/study.com-access_log" common
</VirtualHost>

上面的 8000 是 apache 服務器監聽的端口號。
配置了兩個結點。
這樣,apache 服務器的配置就完成了,接下來還要配置 tomcat 與上面的配置相適應。


3 Tomcat 配置
的註釋打開;
的註釋放開為 tomcat 配置 cluster :
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
mcastBindAddress="127.0.0.1"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="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">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>

按照 tomcat 的官方文檔,只需要打開 cluster 的註釋即可,實際使用中發現在本機集群不行,同步不了 session 。需要加上上面代碼的紅色加粗部分。
配置完了這些之後,還有一點很重要:需要在發佈工程的 web.xml 文件中加入:
<distributable/>

好了,現在已經實現了集群和負載均衡。
他是 session 粘性的,但是當一個 tomcat 死去之後,請求會立即轉發到另一個 tomcat 並複製 session 。這是非常愉快的事情。 如果是多台機器之間構建集群環境,需要把上面配置中 mcastBindAddress 和 address 都配置成本機的地址。在 linux 環境下,還要把上面的


4 使用 mod_jk 進行集群和負載均衡
下載 mod_jk-1.2.28-httpd-2.2.3.so ,放到 apache 安裝目錄的 modules 目錄下 打開 httpd.conf ,增加
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
JkWorkersFile conf/workers.properties
JkMount /*.jsp controller

創建一個 workers.properties 文件,放到 apache 安裝目錄的 conf 下,文件中包含如下內容:
worker.list = controller,tomcat1,tomcat2
#========tomcat1========
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=9009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========controller, 負載均衡控制器 ========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1

這就可以了。 Tomcat 的配置與上面所說的一樣。

原文出處: Tomcat负载均衡和集群笔记_百度文库 */
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|