Apache + Tomcat*2集群 負載平衡(Linux環境)
說明:一臺apache主機,兩臺tomcat主機
安裝JDK、安裝Apache、安裝Tomcat、配置Apache代理、配置Tomcat集群
一、安裝JDK(所有運行Tomcat主機,即web服務器)
1.下載JDK的bin包,如jdk-1_5_0_02-linux-i586.rpm.bin ,給其添加執行權限,執行#./jdk-1_5_0_02-linux-i586.rpm.bin , 在
當前目錄生成rpm安裝包,同樣給其添加執行權限。 再執行 #rpm -ivh jdk-1_5_0_02-linux-i586.rpm 出現安裝協議 按<Enter>接受
即可。
2.設置環境變量 #vi /etc/profile 在其最后加入
JAVA_HOME =/ usr / java / jdk1. 5 .0_02
CLASSPATH = .:$JAVA_HOME / lib:$JAVA_HOME / jre / lib
PATH = $PATH:$JAVA_HOME / bin:$JAVA_HOME / jre / bin
export JAVA_HOME CLASSPATH PATH
保存退出
3.要使JDK在所有的用戶中使用,可以這樣:vi /etc/profile.d/java.sh在新的java.sh中輸入以下內容:
#set java environment
JAVA_HOME=/usr/java/jdk1.5.0_02
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export JAVA_HOME CLASSPATH PATH
保存退出,然后給java.sh分配權限:chmod 755 /etc/profile.d/java.sh
二、安裝Apache(訪問代理主機)
1.下載apache源代碼 http://archive.apache.org/dist/httpd/httpd-2.2.2.tar.gz
解壓縮 tar fvxz httpd-2.2.2.tar.gz
2.進入解壓后的目錄。進行配置:
. / configure -- prefix =/ usr / apache -- enable - module = most -- enable - proxy -- enable - proxy - ajp -- enable - forward -- enable - proxy - connect -- enable - proxy - http -- enable - so -- enable - deflate -- enable - headers -- enable - include
上面的配置,用到了其他一些模塊,說不定以后會用到,如支持ssi的include模塊。
3.編譯(編譯如果不成功,確認一下你的linux是否安裝有編譯所需要的c環境和其他需要的類庫)
make
4.安裝 make install
5.進入/usr/apache目錄,運行apache ./apachectl -k start
運行apache后,瀏覽一下是否運行正常。
關閉apache ./apachectl -k stop
6.把apache作為linux的啟動就運行服務程序
執行如下操作:cp /usr/apache/bin/apachectl /etc/rc.d/init.d/httpd
確認linux以前安裝的httpd(apache)不需要了,你可覆蓋掉以前apache的httpd文件。
chkconfig --add httpd
運行linux的setup,把httpd服務默認設定為自動運行。
到現在,你就可用另一種方式來啟動、關閉apache了。如service httpd start
三、安裝tomcat(Web服務器)
1.下載jakarta-tomcat-5.5.20.tar.gz
tar zxf jakarta-tomcat-5.5.20.tar.gz 解壓文件 (如解壓到/usr/local/)
2.設置環境變量 #vi /etc/profile 添加
CATALINA_HOME=/usr/local/jakarta-tomcat-5.5.30
export CATALINA_HOME
保存退出
3.修改JVM內存:/bin/catalina.sh 文件
在下# ----- Execute The Requested Command -----------------
# Bugzilla 37848: only output this if we have a TTY
if [ $have_tty -eq 1 ]; then
echo "Using CATALINA_BASE: $CATALINA_BASE"
echo "Using CATALINA_HOME: $CATALINA_HOME"
echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"
if [ "$1" = "debug" -o "$1" = "javac" ] ; then
echo "Using JAVA_HOME: $JAVA_HOME"
else
echo "Using JRE_HOME: $JRE_HOME"
fi
fi
添加以下內容:
CATALINA_OPTS = " $CATALINA_OPTS -Xms256m -Xmx512m -XX:PermSize=32m -XX:MaxPermSize=128m $JPDA_OPTS "
JAVA_OPTS = " $JAVA_OPTS -Djava.awt.headless=true "
echo " Using CATALINA_OPTS: $CATALINA_OPTS "
echo " Using JAVA_OPTS: $JAVA_OPTS "
4.運行/usr/local/jakarta-tomcat-5.5.30/bin/startup.sh 啟動tomcat服務器 測試是否正常
四、配置apache代理(適用mod_proxy_ajp.so)
編輯apache配置文件 #vi /usr/apache/conf/httpd.conf
1.配置proxy_ajp
#加載解析模塊(windows下,或linux采用動態加載模式下需配置。前面我們的linux編譯時把下面的模塊嵌入到了apache中
,所以不用再加載)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
2.配置文件添加
ProxyPass / balancer: // tomcatcluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=on timeout=5 maxattempts = 3
ProxyPassReverse / balancer: // tomcatcluster/
< Proxy balancer: // tomcatcluster >
BalancerMember ajp: // 192.168.40.15:8009 smax=2 loadfactor=1 route=tomca t1
BalancerMember ajp: // 192.168.71.106:8009 smax=2 loadfactor=2 route=tomc at2
</ Proxy >
以上說明請參見mod_proxy中文手冊 http://www.6bee.com/tech/ApacheMenu/mod/mod_proxy.html
3.其他說明
1、apache對tomcat的支持歷史:apache第2.1版本后,內置了proxy_ajp,而jk2已經沒人開發了,jk則支持到apache的
2.0.58版本。
proxy_ajp配置較簡單,但可配置性還不如jk2,主要表現在proxy_ajp目前只支持配置到目錄,還不支持對文件名稱的pattern模式匹
配(即還不能定義到只對jsp文件起作用)。
2、因為proxy_ajp的配置,還不支持對文件名稱的pattern模式匹配,所以你要特別注意:
——盡量把jsp和靜態文件和圖片路徑分不同的目錄來管理;
——對于靜態文件和圖片路徑,如/images,你可用“ProxyPass /images !”來禁止ProxyPass,從而來讓apache來直接處理圖片的請
求。
——關于apache的ssi(即shtml,include)與tomcat的集成時,shtml文件不能處于ProxyPass的控制下(即不能在ProxyPass目錄)
,而shtml調用的jsp須在ProxyPass有效控制下;
五、配置Tomcat負載均衡、集群
1.修改tomcat 的 conf/server.xml 的<Engine>
去掉注釋<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
jvmRoute是tomcat路由標示,由此區分兩臺tomcat主機,那么第二臺就改為
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">
加上注釋<Engine name="Catalina" defaultHost="localhost">
2.修改tomcat 的 conf/server.xml 的<Connector>
去掉注釋<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />
3.修改tomcat 的 conf/server.xml 的<Cluster>
<!--
< Cluster className = " org.apache.catalina.cluster.tcp.SimpleTcpCluster "
managerClassName = " org.apache.catalina.cluster.session.DeltaManager "
expireSessionsOnShutdown = " false "
useDirtyFlag = " true "
notifyListenersOnReplication = " true " >
< Membership
className = " org.apache.catalina.cluster.mcast.McastService "
mcastAddr = " 228.0.0.4 "
mcastPort = " 45564 "
mcastFrequency = " 500 "
mcastDropTime = " 3000 " />
< Receiver
className = " org.apache.catalina.cluster.tcp.ReplicationListener "
tcpListenAddress = " auto "
tcpListenPort = " 4001 "
tcpSelectorTimeout = " 100 "
tcpThreadCount = " 6 " />
< Sender
className = " org.apache.catalina.cluster.tcp.ReplicationTransmitter "
replicationMode = " pooled "
ackTimeout = " 5000 " />
< Valve className = " org.apache.catalina.cluster.tcp.ReplicationValve "
filter = " .*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt; " />
< Deployer className = " org.apache.catalina.cluster.deploy.FarmWarDeployer "
tempDir = " /tmp/war-temp/ "
deployDir = " /tmp/war-deploy/ "
watchDir = " /tmp/war-listen/ "
watchEnabled = " false " />
< ClusterListener className = " org.apache.catalina.cluster.session.ClusterSessionListener " />
</ Cluster >
-->
把上面的注釋拿掉 就ok 了!
4.在每個webapps應用中,修改web.xml文件 添加元素<distributable/>
最后完工,重啟tomcat,apahce測試平衡負載,新建jsp頁面
<%
Runtime lRuntime = Runtime.getRuntime();
out.println("*** BEGIN MEMORY STATISTICS ***<br/>");
out.println("Free Memory: "+lRuntime.freeMemory()/1024/1024+"M<br/>");
out.println("Max Memory: "+lRuntime.maxMemory()/1024/1024+"M<br/>");
out.println("Total Memory: "+lRuntime.totalMemory()/1024/1024+"M<br/>");
out.println("Available Processors : "+lRuntime.availableProcessors()+"<br/>");
out.println("*** END MEMORY STATISTICS ***");
%>
<br>
<%= request.getSession().getId() %>
放入到兩臺tomcat的ROOT目錄中測試
再測試集群(session復制)
posted on 2006-11-15 11:06
Derek.Guo 閱讀(4113)
評論(0) 編輯 收藏 所屬分類:
Linux/Unix