在windows 2000,XP 下通過mod_jk2.so整合Tomcat5.0 和 Apache2.0

 

在windows 2000,XP 下通過mod_jk2.so整合Tomcat5.0 和 Apache2.0

------- dreamsky15(阿賢) 原創

準備工作:
分別到www.sun.comwww.apache.org 下載

JDK1.4 : j2sdk-1_4_2_04-windows-i586-p.exe
Tomcat5 : jakarta-tomcat-5.0.14.exe
apache2:apache_2.0.48-win32-x86-no_ssl.exe
jk2 : jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip

版本可能有所更新。


1.安裝JDK1.4,指定安裝在 C:/JDK1.4目錄下;
2.確認80和8080端口不被佔用,特別是IIS是否佔用80端口,否則要修改端口設置;
3.安裝Tomcat5.0,指定安裝在C:/Tomcat5.0目錄下,
 指定JAVA虛擬機目錄爲剛纔安裝的 C:/JDK1.4;
4.安裝apache2,指定安裝在 C:/ 根目錄下,那麼它自己會自動創建Apache2目錄,
 得到 C:/Apache2 最終目錄;
5.設置windows系統環境變量中的系統變量:

path:
 C:/JDK1.4/bin;C:/JDK1.4/jre/bin;

classpath:
 C:/JDK1.4;C:/JDK1.4/lib;C:/JDK1.4/lib/dt.jar;C:/JDK1.4/lib/tools.jar;C:/Tomcat5.0/common/lib/servlet-api.jar;C:/Tomcat5.0/common/lib/tools.jar;
6.重啓電腦
7.用瀏覽器訪問
http://localhost/  和 http://localhost:8080/ 
兩個網站,它們分別是apache和Tomcat的默認首頁;
如果不成功則要重新檢查設置;
8.解壓 jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip
9.在解壓文件的 doc/mod_jk2 目錄下有 INSTALL.txt 英文文檔教你安裝,你可以作爲參照。
10.在解壓文件的 modules 目錄下有 mod_jk2.so 文件,將其複製到 C:/Apache2/modules;
11.在解壓文件的 conf 目錄下有 workers2.properties.sample文件,將其複製到 C:/Apache2/conf 目錄下,將文件名改爲workers2.properties,增加兩行:
[uri:/*.jsp]
group=lb

這表明要Tomcat解釋所有以 jsp 爲後綴的文件。

增加
[uri:/servlet/*]
group=lb

這表明要Tomcat解釋/servlet/目錄下的所有文件,
所以所有servlet最好映射到 /servlet/ 路徑下,其他的文件不要放到這個目錄下。
(注:tomcat中所有沒有在 web.xml 中註冊的 servlet默認映射到 /servlet/ 路徑下。
但前提條件是你要修改tomcat的 web.xml ,去掉兩處 <servlet-name>invoker</servlet-name>的註釋,來激活這個功能。)

這樣做,是爲了令到Tomcat專職解釋所有 jsp 和 servlet ,而將 html,txt等類型的文件交給強大的Web服務器——apache解釋,各司其職,分擔Tomcat的壓力。

12.備份好C:/Apache2/conf/httpd.conf防止不測,修改 C:/Apache2/conf/httpd.conf 文件,原文件有很多行LoadModule,
在其後增加一行:
LoadModule jk2_module modules/mod_jk2.so
這個在 INSTALL.txt 英文文檔裏有說;

找到 DocumentRoot "C:/Apache2/htdocs" ,修改爲你指定的根目錄
DocumentRoot "C:/Tomcat5.0/webapps"

正反斜槓無所謂,最好用 / ;

同樣找到<Directory "C:/Apache2/htdocs">
修改爲<Directory "C:/Tomcat5.0/webapps">

找到 DirectoryIndex index.html index.html.var
在後面增加 index.jsp 使得apache將index.jsp也作爲默認首頁。

13.將原來 <VirtualHost *:80> 相關的設置註釋去掉,自定義你的實際參數;
其中
DocumentRoot /www/docs/dummy-host.example.com
改爲DocumentRoot "C:/Tomcat5.0/webapps"

將 AddDefaultCharset ISO-8859-1 改爲
AddDefaultCharset gb2312
使得apache默認是簡體中文。
14.
啓動Tomcat5.0,apache2
你會看到apache service monitor 控制檯窗口下的狀態欄文字由原來的
Apache/2.0.48 (Win32)
變爲
Apache/2.0.48 (Win32) mod_jk2/2.0.4

分別訪問 http://localhost/jsp-examples/
http://localhost:8080/jsp-examples/
測試其中的jsp例子,如果都能正確運行,證明配置成功!!!
恭喜你! :)

有錯誤或疑問,請多多交流。

===============================================================================

===============================================================================

目前比較常用的負載均衡技術主要有:

1. 基於DNS的負載均衡

通過DNS服務中的隨機名字解析來實現負載均衡,在DNS服務器中,可以爲多個不同的地址配置同一個名字,而最終查詢這個名字的客戶機將在解析這個名字時得到其中一個地址。因此,對於同一個名字,不同的客戶機會得到不同的地址,他們也就訪問不同地址上的Web服務器,從而達到負載均衡的目的。

2. 反向代理負載均衡 (如Apache+JK2+Tomcat這種組合)

使用代理服務器可以將請求轉發給內部的Web服務器,讓代理服務器將請求均勻地轉發給多臺內部Web服務器之一上,從而達到負載均衡的目的。這種代理方式與普通的代理方式有所不同,標準代理方式是客戶使用代理訪問多個外部Web服務器,而這種代理方式是多個客戶使用它訪問內部Web服務器,因此也被稱爲反向代理模式。

3. 基於NAT(Network Address Translation)的負載均衡技術 (如Linux Virtual Server,簡稱LVS)

網絡地址轉換爲在內部地址和外部地址之間進行轉換,以便具備內部地址的計算機能訪問外部網絡,而當外部網絡中的計算機訪問地址轉換網關擁有的某一外部地址時,地址轉換網關能將其轉發到一個映射的內部地址上。因此如果地址轉換網關能將每個連接均勻轉換爲不同的內部服務器地址,此後外部網絡中的計算機就各自與自己轉換得到的地址上服務器進行通信,從而達到負載分擔的目的。

 

上面是採用了Apache httpd作爲web服務器的,即作爲Tomcat的前端處理器,根據具體情況而定,有些情況下是不需要Apache httpd作爲 web 服務器的,如系統展現沒有靜態頁面那就不需要Apache httpd,那時可以直接使用Tomcat作爲web 服務器來使用。使用Apache httpd主要是它在處理靜態頁面方面的能力比Tomcat強多了。

1、 用戶的網頁瀏覽器做完本地 DNS和企業授權的DNS之的請求/響應後,這時候企業授權的DNS(即21cn BOSS DNS)會給用戶本地的DNS服務器提供一個NAT請求分配器(即網關)IP。

2、 NAT分配器,它會根據特定的分配算法,來決定要將連接交給哪一臺內部 Apache httpd來處理請求。大多數的NAT請求分配器提供了容錯能力:根據偵測各種WEB服務器的失效狀況,停止將請求分配給已經宕掉的服務器。並且有些分配器還可以監測到WEB服務器機器的負載情況,並將請求分配給負載最輕的服務器等等。Linux Virtual Server是一個基於Linux操作系統上執行的VS-NAT開源軟件套件,而且它有豐富的功能和良好的說明文件。商業硬件解決方案 Foundry Networks的ServerIron是目前業界公認最佳的請求分配器之一。

3、 Apache httpd + Mod_JK2在這裏是作爲負載均衡器,那爲什麼要做集羣呢?如果集羣系統要具備容錯能力,以便在任何單一的硬件或軟件組件失效時還能100%可用,那麼集羣系統必須沒有單點故障之憂。所以,不能只架設一臺有mod_jk2的Apache httpd,因爲如果 httpd或mod_jk2失效了,將不會再有請求被會送交到任何一個Tomcat 實例。這種情況下,Apache httpd就是瓶勁,特別在訪問量大的網站。

4、 Mod_JK2負載均衡與故障復原,決定把Apache httpd當成web服務器,而且使用mod_jk2將請求傳送給Tomcat,則可以使用mod_jk2的負載均衡與容錯功能。在集羣系統中,帶有 mod_jk2的Apache httpd可以做的事情包括:

A、 將請求分配至一或多個Tomcat實例上你可以在mod_jk2的workers.properties文件中,設定許多Tomcat實例,並賦於每個實例一個lb_factor值,以作爲請求分配的加權因子。

B、 偵測Tomcat實例是否失敗當Tomcat實例的連接器服務不再響應時,mod_jk2會及時偵測到,並停止將請求送給它。其他的Tomcat實例則會接受失效實例的負載。

C、 偵測Tomcat實例在失效後的何時恢復因連接器服務失效,而停止將請求分配給Tomcat實例之後,mod_jk2會週期性地檢查是否已恢復使用性,並自動將其加入現行的Tomcat實例池中。

5、 Tomcat中的集羣原理是通過組播的方式進行節點的查找並使用TCP連接進行會話的複製。這裏提示一下就是,對每個請求的處理,Tomcat都會進行會話複製,複製後的會話將會慢慢變得龐大。

6、 Mod_jk2同時支持會話親和和會話複製。在tomcat 5中如何實現會話親和和會話複製?把server.xml中的標籤去掉就實現會話親和,把標籤加上就實現會話複製。

7、 會話親和:就是表示來自同會話的所有請求都由相同的Tomcat 實例來處理,這種情況下,如果Tomcat實例或所執行的服務器機器失效,也會喪失Servlet的會話數據。即使在集羣系統中執行更多的Tomcat實例,也永遠不會複製會話數據。這樣是提高集羣性能的一種方案,但不具備有容錯能力了。

8、 使用會話複製,則當一個Tomcat實例宕掉時,由於至少還有另一個Tomcat實例保有一份會話狀態數據,因而數據不會喪失。但性能會有所降低。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章