轉自:http://blog.ixpub.net/html/60/12690260-38040.html
昨天配置Apache+2Tomcat做負載均衡,在網上查了不少資料,有不少都不夠完整,現在把資料整理了一下,貼出來以供參考。
1 說明
本配置實現的是多臺機器訪問的負載均衡。它使用Apache來實現動態負載均衡,并且實現了會話綁定機制,即用戶第一次訪問的會話將綁定在首次訪問的tomcat上,防止會話信息丟失。
該配置所運行的環境為Windows 2000 server,實現兩臺機器的負載均衡,一臺機器運行apache,另外兩臺機器運行tomcat.該配置稍做修改就可以配置在其他操作系統并能實現一臺服務器跑多個tomcat的負載均衡,以及多于兩臺服務器的負載均衡。
2 需要的軟件
Apache 2.0.55 download
http://httpd.apache.org/download.cgi
最新版本是2.2.0,但是jk module最新的是支持2.0.55的
Tomcat 5.0
http://tomcat.apache.org/tomcat-5.0-doc/index.html
用tomcat5.0的原因是最近使用Tomcat5.5,發現做網絡連接時非常慢,比如連數據庫或者連socket服務器時,我不清楚是不是我配置的原因,但是最后查不出來,還是換到5.0上比較穩定。
The JK module
http://tomcat.apache.org/download-connectors.cgi
對于Apache來說,很多推薦都是使用jk2,但是tomcat小組已經決定放棄jk2,因為jk可以適用于更多的服務器類型而不是單單Apache,所以我們為了長遠著想,還是用JK吧。
J2sdk 1.4.2
http://java.sun.com/j2se/1.4.2/download.html
3 編譯、安裝和配置Apache
3.1 解包、編譯和安裝
安裝Apache和Tomcat+J2sdk,沒什么好說的。
3.2 基本配置
環境變量中加入
TOMCAT_HOME=<tomcat安裝路徑>
JAVA_HOME=<java安裝路徑>
JAVA_OPTS=-Xms64M -Xmx512M
Xms是運行tomcat的java heap的最小大小, Xms是最大大小。
3.3 拷貝mod_jk模塊文件
拷貝mod_jk.so到Apache安裝目錄的modules目錄下
3.4 在mod_jk.conf配置
編輯Apache的配置文件Apache安裝目錄的conf/httpd.conf
加入一行
include conf\mod_jk.conf
在conf目錄下創建mod_jk.conf文件,內容如下:
--------------------------------------mod_jk.conf----------------------------------------------
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send JSPs for context / to worker named loadBalancer
JkMount /*.jsp loadBalancer
--------------------------------------------mod_jk.conf-----------------------------------------------
3.5 workers.properties 文件
在 conf目錄下生成該文件,該文件告訴apache 每個負載均衡的tomcat服務的運行參數,如機器名和端口號等。
-----------------------------------------workers.properties-------------------------------
#
# workers.properties
#
# list the workers by name
worker.list=tomcat1, tomcat2, loadBalancer
# ------------------------
# First tomcat server
# ------------------------
worker.tomcat1.port=8009 //第一臺tomcat服務所在機器監聽端口
worker.tomcat1.host=hostname1 //第一臺tomcat服務所在機器ip地址
worker.tomcat1.type=ajp13
# Specify the size of the open connection cache.
#worker.tomcat1.cachesize
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# ----> lbfactor must be > 0
# ----> Low lbfactor means less work done by the worker.
worker.tomcat1.lbfactor=100
# ------------------------
# Second tomcat server
# ------------------------
worker.tomcat2.port=8009 //第二臺tomcat服務所在機器監聽端口
worker.tomcat2.host=hostname2 //第二臺tomcat服務所在機器ip地址
worker.tomcat2.type=ajp13
# Specify the size of the open connection cache.
#worker.tomcat2.cachesize
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
# ----> lbfactor must be > 0
# ----> Low lbfactor means less work done by the worker.
worker.tomcat2.lbfactor=100
# ------------------------
# Load Balancer worker
# ------------------------
#
# The loadbalancer (type lb) worker performs weighted round-robin
# load balancing with sticky sessions.
# Note:
# ----> If a worker dies, the load balancer will check its state
# once in a while. Until then all work is redirected to peer
# worker.
worker.loadBalancer .type=lb
worker.loadBalancer.balanced_workers=tomcat1, tomcat2
#
# END workers.properties
#
-----------------------------------------workers.properties-----------------------------
4 配置Tomcat 服務器
修改conf/server.xml文件
在跑第一個tomcat實例的機器上,在大約第100行, 替換:
<Engine name="Standalone" defaultHost="localhost" debug="0">
為:
<Engine jvmRoute="tomcat1" name="Standalone" defaultHost="localhost" debug="0">
對跑第二個tomcat實例的機器上,替換為 jvmRoute="tomcat2".
注
意,一定是替換這一行,而包含在原來的engine里面的host不做更改。有的文檔寫得是在配置中加入一行<Engine
jvmRoute="tomcat1" name="Standalone" defaultHost="localhost"
debug="0"><Engine>,其實是不對的,這樣負載均衡是沒有問題的,但是不能做session綁定了,也就是說同一用戶
會在兩臺服務器上跳來跳去。這是由于jvmRoute不正確引起的,因為如果只是加入一行的話,是沒有什么作用的,Engine仍然是原來的
Engine,而原來的Engine中jvmRoute是不正確的,所以一定要替換。而且這個jvmRoute一定要跟
workers.properties中的名稱完全匹配,否則也不能實現session綁定.
5 測試
在跑tomcat1實例的機器的 webapps/ROOT 目錄生成如下內容的index.jsp文件:
<html>
<body bgcolor=red>
<center>
<h1>Tomcat 1</h1>
</body>
</html>
同理,在跑tomcat2實例的機器的 webapps/ROOT 目錄生成如下內容的index.jsp文件:
<html>
<body bgcolor=blue>
<center>
<h1>Tomcat 2</h1>
</body>
</html>
啟動Tomcat1, Tomcat2 和Apache服務
首先驗證Apache服務器的靜態頁面是否正常,訪問:http://hostname/.
驗證tomcat和apache配置提供負載均衡,用不同的終端訪問:http://hostname/index.jsp
如果你看到紅色的頁面,表示為tomcat1 服務器返回的,
如果你看到蘭色的頁面,表示為tomcat2 服務器返回的。這里注意的是在linux上面的apache輪詢一般要返回10次tomcat1的服務后才會返回tomcat2的服務,并且以后的訪問是沒有規律的,在window2000環境下則是交替的返回tomcat1和tomcat2 的服務。
現在再測試下會話綁定功能,當你在同一臺客戶端里重載以上(刷新頁面)訪問的index.jsp頁面時,確信永遠返回同一種顏色,即總是從同一臺tomcat機器返回頁面。
JK module 的worker.properties配置的詳細說明參看
http://tomcat.apache.org/connectors-doc/config/workers.html
JK module 的Apache配置的詳細說明
http://tomcat.apache.org/connectors-doc/config/apache.html
本測試使用的軟體下載地址:
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/
http://archive.apache.org/dist/httpd/binaries/win32/
posted on 2009-11-26 15:26
Ke 閱讀(490)
評論(0) 編輯 收藏 所屬分類:
tomcat