準備軟件
1、? Tomcat5.5.17,下載地址:http://www.apache.org/dist/tomcat/tomcat-5/v5.5.17/bin/
2、? Apache2.2.3,下載地址:http://apache.justdn.org/httpd/binaries/win32/apache_2.2.3-win32-x86-no_ssl.msi?;
3、? mod_jk-1.2.20-apache-2.2.3.so模塊,,下載地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.20/。
集群與負載平衡
??? 使用mod_jk默認的以輪循方式進行平衡負載,而集群方式也是使用這種方法進行平衡。Tomcat中的集群原理是通過組播的方式進行節點的查找并使用TCP連接進行會話的復制。
??? 集群不同于負載平衡的是,由于集群服務需要在處理請求之間不斷地進行會話復制,復制后的會話將會慢慢變得龐大,因此它的資源占用率是非常高的,如果在并發量大的應用中,復制的會話大小會變得相當大,而使用的總內存更是會迅速升高。
??? 但集群的會話復制,增加了系統的高可用性。由于在每臺服務器都保存有用戶的Session信息,如果服務器群中某臺當機,應用可以自動切換到其它服務器上繼續運行,而用戶的信息不會丟失,這提高了應用的冗錯性。
??? 具體采用負載平衡還是集群,這要看應用的需求了。
安裝配置Apache
??? 安裝前請確認IIS服務停止,因為Apache可能會使用80端口.
1
、下載
Apache
的安裝程序
apache_
2 、安裝完畢后,將下載的 mod_jk-1.2.20-apache-2.2.3.so改名為mod_jk.so并 復制到 Apache 安裝目錄下的 modules 子目錄中。
3
、然后進入
Apache
安裝目錄下的
conf
子目錄中,打開
httpd.conf
配置文件,在最后插入以下一行:
Include conf/mod_jk.conf
4、?
在
conf
子目錄下,建立一個新的配置文件:
mod_jk.conf
,此文件為
Apache
加載連接器的配置文件,文件名可修改,但要與
httpd.conf
中
Include
的文件名一致,在logs子目錄下建立日志文件mod_jk.log,mod_jk.conf內容如下:













































5、? 在conf子目錄下,建立一個新的配置文件:workers.properties,此文件為負載平衡的配置文件,文件名不能修改,這是JK默認的名字,內容如下:





























































注:以上定義了三個worker,分別為node1,node2,node2;8009端口是Tomcat默認的ajp端口;定義了一個負載平衡服務器loadbalancer,相關的詳細說明可以看官方的網站文檔:http://tomcat.apache.org/connectors-doc/,其它節點的定義可以直接Copy,修改一下節點名及IP就好了。
A、worker.list=loadbalancer
設定工作的負載平衡器,各Tomcat節點不能加入此列表。
?????? B、worker.server99.lbfactor
負載平衡的權重比,如果此權重比越大,則分配到此節點的請求越多,如以上兩個節點的權重比為1:1,則為平均分配。
C、worker.loadbalancer.balance_workers=node1,node2,node3
?? 指定此負載平衡器負責的Tomcat應用節點。
D、worker.loadbalancer.sticky_session=true
?? 此處指定集群是否需要會話復制,如果設為true,則表明為會話粘性,不進行會話復制,當某用戶的請求第一次分發到哪臺Tomcat后,后繼的請求會一直分發到此Tomcat服務器上處理;如果設為false,則表明需求會話復制。當設置為0(false)時,是基于請求的負載均衡,為1(true)時是基于用戶的負載均衡。
E、worker.loadbalancer.sticky_session_force=true
?? 如果上面的sticky_session設為true時,建議此處也設為true,此參數表明如果集群中某臺Tomcat服務器在多次請求沒有響應后,是否將當前的請求,轉發到其它Tomcat服務器上處理;此參數在sticky_session=true時,影響比較大,會導致轉發到其它Tomcat服務器上的請求,找不到原來的session,所以如果此時請求中有讀取session中某些信息的話,就會導致應用的null異常。
參考:
http://www.aygfsteel.com/zolly/archive/2006/12/12/Apache_Tomcat.html
http://www.qqread.com/z/apache/index-0.html
http://www.javazy.com/contentex/200641293233.shtml
http://www.newasp.net/tech/java/14456.html
http://amqir.itpub.net/