Apache2.2+Tomcat5.5 集羣配置

一、架構:
users --> apache web server + mod_jk -->tomcat instance
1、mode_jk介紹:
它是早期mod_jserv的替代品,是一個全新負責處理Apache和Tomcat通訊的Apache插件。
Apache加載jk模塊,通過ajp13(Apache jServ Protocol version 1.3)協議與tomcat通訊;
2、apache + JK 負載均衡器作用?
1)它實現了負載均衡算法,通過將請求分發到不同的服務器來達到高可用性和高效的處理能力;
2)監控集羣中每一個tomcat的健康狀態,來防止將請求轉發到一個失敗的節點;
3)它會使用“會話粘滯”技術以確保來自同一個用戶的請求會被轉發到同一個服務器;

二、環境搭建:
1、Apache 2.2.14 下載地址:http://httpd.apache.org/,如可以通過訪問 "http://localhost"來判斷apache是否安裝成功。如果提示80端口被佔用,則關閉掉類似於迅雷或其他應用程序,可能是這些應用程序佔用了80端口;

2、Tomcat 5.5 綠色版 下載地址:http://tomcat.apache.org/download-55.cgi
由於是集羣,這裏我們安裝2個tomcat,並命名tomcat根目錄分別爲tomcata和tomcatb,如果使用默認配置,就不能同時啓動兩個tomcat了,我們必須修改其中一個tomcat的配置,例如修改tomcatb。找到tomcatb的conf目錄的server.xml,將其中出現80位置全部修改爲90(此時html端口變爲9080,而ajp協議變爲9009,應用程序主要是通過html端口訪問,而apache是通過ajp協議與tomcat通訊的);

3、mod_jk-1.2.28-httpd-2.2.3.so 下載地址:http://download.csdn.net/source/1599820(有試過mod_jk的其他版本,實驗不成功)

三、配置:
1、實現apache請求轉發多個tomcat
1)在Apache的安裝目錄下的modules目錄下,找到httpd.conf文件,打開此文件,搜索#LoadModule,在這些屏蔽信息#LoadModule後加上
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.3.so
讓httpd加載jk_module模塊。

再在該文件最後加上如下內容:
#告訴apache workers文件的位置
JkWorkersFile "%ApacheHomeDir%/conf/workers.properties"
#日誌
JkLogFile "%ApacheHomeDir%/logs/mod_jk.log"
#日誌級別
JkLogLevel warn
#路徑滿足/jsp-examples 或 /jsp-examples/* 給work1處理
JkMount /jsp-examples worker1
JkMount /jsp-examples/* worker1
#路徑滿足/servlets-examples 或 /servlets-examples/* 給work2處理
JkMount /servlets-examples worker2
JkMount /servlets-examples/* worker2

2)在 "%ApacheHomeDir%/conf 目錄下創建workers.properties文件,內容如下:
worker.list = worker1,worker2

worker.worker1.port = 8009
worker.worker1.host = localhost
worker.worker1.type = ajp13

worker.worker2.port = 9009
worker.worker2.host = localhost
worker.worker2.type = ajp13

3)重啓兩個tomcat和apache,訪問如下地址:
http://localhost/jsp-examples
http://localhost/servlets-examples
注意:由於apache使用的是80端口,通過80端口可以訪問到兩個tomcat中自帶的示例應用程序,故apache完成了請求從apache到tomcat的轉發;

2、實現負載均衡與會話粘滯:
1)修改 "%ApacheHomeDir%/conf/workers.properties" 文件,其內容爲:
# balancer 爲邏輯名
worker.list = balancer

# worker.balancer要與上面的balancer同名;lb=load balance
worker.balancer.type = lb
# 承擔分發工作的tomcat
worker.balancer.balance_workers = worker1,worker2
# B策略=busy 根據繁忙係數來決定請求分配
worker.balancer.method = B
# 說明這個負載均衡器會實現會話粘滯功能(可參考官方說明,各版本tomcat配置會不一樣)
worker.balancer.sticky_session = 1

worker.worker1.port = 8009
# 遠程服務器則修改爲服務器的ip
worker.worker1.host = localhost
worker.worker1.type = ajp13
# 負載均衡器根據這參數來決定該服務器使用的頻率
worker.worker1.lbfactor = 1

worker.worker2.port = 9009
worker.worker2.host = localhost
worker.worker2.type = ajp13
worker.worker2.lbfactor = 1

2)爲tomcat的Engine配置jvmRoute參數
打開tomcat 的 server.xml文件,找到Engine,在此標籤內加上jvmRoute="worker1",另外一個tomcat加上jvmRoute="worker2"
此處的work1和work2要與apache 的 conf/workers.properties配置的work名稱對應,這樣apache才知道是哪個tomcat來處理請求;

3)修改apache的httpd.xml文件,其內容如下:
JkMount /jsp-examples balancer
JkMount /jsp-examples/* balancer

JkMount /servlets-examples balancer
JkMount /servlets-examples/* balancer
從而將之前交給work1和work2的請求,全部交給balancer來處理。

4)修改tomcat的server.xml文件,去掉Cluster註釋:
分別修改兩個tomcat的server.xml文件,分別去掉Cluster註釋,並修改tcpListenPort配置,將其中一個改爲4002即可。

5)配置集羣應用:
找到你要集羣的項目,web.xml文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章