選取Apache HTTP Server作為前端的負(fù)載服務(wù)器,后端選取兩個(gè)Tomcat作集群,此次選擇的配置方式為Session Sticky(粘性Session),這種方式將同一用戶的請求轉(zhuǎn)發(fā)到特定的Tomcat服務(wù)器上,避免了集群中Session的復(fù)制,缺點(diǎn)是用戶只跟一種的一臺(tái)服務(wù)器通信,如果此服務(wù)器down掉,那就廢了。
采用的model為mod_proxy_ajp.so,整個(gè)配置在tomcat的配置文件中都有相關(guān)的注釋,只需作相應(yīng)修改就OK。
我們選取的是Apache HTTP Server2.2.4,Tomcat5.5.16。
首先安裝Apache HTTP Server,然后修改其配置文件http.conf,首先load三個(gè)model,代碼如下:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
然后在此配置文件末端加入以下代碼:

ProxyPass / balancer://tomcatcluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3

ProxyPassReverse / balancer://tomcatcluster/

<Proxy
balancer://tomcatcluster> 
BalancerMember ajp://localhost:8009 route=a

BalancerMember ajp://localhost:9009 route=b

</Proxy>
以上代碼配置了Proxy的相關(guān)參數(shù),<Proxy>模塊定義了均衡負(fù)載的配置,其中兩個(gè)Tomcat Server都配置在同一臺(tái)服務(wù)器上,端口分別為8009、9009,并配置各自的route,這樣Apache Server就能根據(jù)route將請求轉(zhuǎn)發(fā)給特定的Tomcat。
接下來修改Tomcat的server.xml文件,如下:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
其中的port為前面<Proxy>中設(shè)定的端口,還要配置其route,代碼如下:
<!-- Define the top level container in our container hierarchy -->
<Engine name="Catalina" defaultHost="localhost" jvmRoute="a">
jvmRoute也須同前面的設(shè)置一樣。
下面用JMeter對配置后的負(fù)載均衡做一測試,首先先啟動(dòng)兩個(gè)Tomcat Server,隨后啟動(dòng)Apache Server,在JMeter中新建測試計(jì)劃,在兩個(gè)Tomcat Server中的jsp-examples下新建test.jsp(此jsp自己隨便寫兩句就成),然后進(jìn)行測試,以下是部分取樣器結(jié)果:

HTTP response headers:

HTTP/1.1 200 OK

Date: Wed, 11 Jul 2007 02:17:55 GMT

Set-Cookie:
JSESSIONID=AC7EF1CAA8C6B0FEB68E77D7D375E2AF.b; Path=/jsp-examples

Content-Type: text/html;charset=ISO-8859-1

Content-Length: 3

Keep-Alive: timeout=5, max=79

Connection: Keep-Alive
以上紅色代碼表示用戶的http請求中的JSESSIONID中已經(jīng)附帶了route后綴,.b表示此請求將轉(zhuǎn)發(fā)到route為b的Tomcat Server上,你將會(huì)發(fā)現(xiàn)其中的一部分請求的JSESSIONID后綴為.a,也就是轉(zhuǎn)發(fā)給route為a的Tomcat Server上。
posted on 2007-07-11 10:08
George Gong 閱讀(8351)
評論(0) 編輯 收藏 所屬分類:
JAVA&&J2EE