索引
0、工作原理
1、軟件準備
1.1 軟件條目
1.2 安裝JDK
1.3 安裝Tomcat
1.4 安裝Apache
2、配置Tomcat集羣
2.1 修改Tomcat默認應用
2.2 添加ROOT應用
2.3 修改server.xml
2.4 修改web.xml
3、配置Apache HTTP代理
4、優化Tomcat配置
4.1 屏蔽HTTP Connector
4.2 配置虛擬主機
4.3 配置GBK編碼
5、測試程序
0、工作原理
Apache(HTTP Server)2.2新增了代理服務器(Proxying)功能:新的代理均衡模塊(mod_proxy_balancer)提供負載均衡服務;AJP 1.3(Apache JServ Protocol)替代jk/jk2等連接器與Tomcat通信。
結合Tomcat的集羣(Cluster)功能,服務器結構如下:
Load Balancer(Apache 2.2 Proxy) |
注:綠色部分爲本文采用的配置情況。
1、 軟件準備
1.1 軟件條目
操作系統 WinXP/Win2003 |
JDK_5.0 http://java.sun.com/javase/downloads/index_jdk5.jsp (MSI Installer) |
1.2 安裝JDK
安裝至目錄 D:/Java/jdk1.5.0 下,設置JAVA_HOME/CLASSPATH/PATH,略。
1.3 安裝Tomcat
解壓縮Zip文件至目錄 D:/Apache/Tomcat 5.5.23_S1 下;待配好後,複製到D:/Apache/Tomcat 5.5.23_S2,修改相關的端口和路徑。
1.4 安裝Apache
安裝至目錄 D:/Apache/Apache2.2 下,可在Tomcat集羣配置完成後再安裝。
2、 配置Tomcat集羣
2.1 修改Tomcat默認應用
刪除$CATALINA_HOME/webapps和$CATALINA_HOME/temp目錄;
將文件夾$CATALINA_HOME/conf/Catalina改名爲Standalone。
2.2 添加ROOT應用
$CATALINA_HOME/conf/Standalone/localhost/ROOT.xml |
<?xml version=”1.0” encoding=”utf-8”?> <!—Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> |
2.3 修改server.xml
$CATALINA_HOME/conf/server.xml |
|||
操作步驟 |
默認 |
Tomcat 1 |
Tomcat 2 |
2.3.1 修改Server端口 |
8005 |
10005 |
20005 |
2.3.2 修改AJP Connector端口 Apache JServ Protocol 1.3 |
8009 |
10009 |
20009 |
2.3.3 修改HTTPConnector端口 |
8080 |
10001 |
20001 |
2.3.4 修改redirectPort端口 |
8443 |
10043 |
20043 |
2.3.5 屏蔽Catalina,打開Standalone,並修改jvmRoute的值爲Tomcat1/Tomcat2 |
|||
2.3.6打開Cluster,修改tcpListenPort |
4001 |
10011 |
20011 |
2.4 修改web.xml
$CATALINA_HOME/conf/web.xml |
(添加)<distributable/> |
或者
$CATALINA_HOME/conf/Standalone/*/ROOT.xml |
(設置)<Context distributable="true" …/> |
設置集羣,session共享。
3、 配置Apache HTTP代理,實現負載均衡
有三種方法實現Tomcat的負載均衡:
a. 使用JK本地連接器(Tomcat-Apache通信插件,JServ->JK->JK2->AJServP);
b. 使用2.x版本的Aache HTTP服務器的代理模塊;
c. 使用Tomcat的blancer web應用。
$APACHE_HOME/conf/httpd.conf |
# 添加下面這段代碼 |
至此,Apache和Tomcat已經安裝、配置完畢,可以依次運行兩個Tomcat(/bin/startup.bat)和Apache程序(Apache Monitor)。
注:
(1) 若系統設置了系統變量CATALINA_HOME,需修改/bin/startup.bat,屏蔽下面的代碼:
#if not "%CATALINA_HOME%" == "" goto gotHome
(2) Apache只是一個代理服務器,所有的請求全部轉至Tomcat處理,故啓用ROOT應用。
4、 優化Tomcat配置
4.1 屏蔽HTTP Connector
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> |
<!-- Define a SSL HTTP/1.1 Connector on port 8443 --> |
4.2 配置虛擬主機
4.2.1 編輯server.xml的Engine,添加Host信息
$CATALINA_HOME/conf/server.xml |
<Engine name="Standalone" defaultHost="localhost" jvmRoute="Tomcat1"> <Host name="localhost" appBase="webapps" …>… …</Host> <Host name="www.site.com" appBase="webapps/www.site.com"/> <Host name="www.site.net" appBase="webapps/www.site.net"/> </Engine> |
4.2.2 創建虛擬主機對應的Webapp目錄
$CATALINA_HOME/webapps/www.site.com $CATALINA_HOME/webapps/www.site.net |
均爲空目錄 |
4.2.3 創建虛擬主機
$CATALINA_HOME/conf/Standalone/www.site.com/ROOT.xml $CATALINA_HOME/conf/Standalone/www.site.net/ROOT.xml |
<?xml version="1.0" encoding="utf-8"?> <Context path="" docBase="E:/Project/{site name}" …> <WatchedResource>WEB-INF/web.xml</WatchedResource> </Context> |
另一個Tomcat Node也做類似的修改,並分別重啓兩個Tomcat。
4.3 配置GBK編碼
$CATALINA_HOME/conf/server.xml |
<!-- Define an AJP 1.3 Connector on port 10009 --> <Connector port="10009" URIEncoding="GBK" enableLookups="false" redirectPort="10443" protocol="AJP/1.3" /> |
5、測試程序
init.jsp |
<% session.setAttribute("name",request.getParameter("name")); out.println("success!" + session.getId()); %> |
testRoute.jsp |
<% String test = session.getId() + " - " + session.getAttribute("name"); System.out.println( new java.util.Date() + ":" + test); out.println( test ); %> |
訪問 http://localhost/init.jsp?name=HAHA(只須執行一次)
訪問 http://localhost/testRoute.jsp
訪問多次就可以發現,兩個Tomat服務器是均衡的,且session共享。
另外,還可以設置路由JSESSIONID
$CATALINA_HOME/conf/server.xml |
<!-- sessionIdAttribute default attribute name is org.apache.catalina.cluster.session.JvmRouteOrignalSessionID. JSESSIONID.{orignal node id} à <Valve className="org.apache.catalina.cluster.session.JvmRouteBinderValve" enabled="true" sessionIdAttribute="takeoverSessionid"/> <ClusterListener className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" /> |
參考資料
Apache Proxy Module http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
Apache Balancer Module http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html
Tomcat 5.5 Load Balancer http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html
Tomcat 5.5 Clustering/Session Replication http://tomcat.apache.org/.../cluster-howto.html
Apache Tomcat 5.5 Proxy http://tomcat.apache.org/tomcat-5.5-doc/proxy-howto.html
(全文完)
[補][推薦]Apache HTTP Server 與 Tomcat 的三種連接方式介紹(劉 冬@IBM) http://www-128.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html
文章來源:http://blog.csdn.net/jxluoix/archive/2008/09/30/2999168.aspx