Apache+Tomcat關於Session Sticky的負載均衡

參數參考:http://httpd.apache.org/docs/current/mod/mod_proxy.html

選取Apache HTTP Server作爲前端的負載服務器,後端選取兩個Tomcat作集羣,此次選擇的配置方式爲Session Sticky(粘性Session),這種方式將同一用戶的請求轉發到特定的Tomcat服務器上,避免了集羣中Session的複製,缺點是用戶只跟一種的一臺服務器通信,如果此服務器down掉,那就廢了。
採用的model爲mod_proxy_ajp.so,整個配置在tomcat的配置文件中都有相關的註釋,只需作相應修改就OK。
我們選取的是Apache HTTP Server2.2.25,Tomcat5.5.35。
首先安裝Apache HTTP Server,然後修改其配置文件http.conf,首先load三個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 /test balancer://mycluster stickysession=JSESSIONID|jsessionid scolonpathdelim=On 
<Proxy balancer://mycluster>
BalancerMember http://192.168.1.50:80 route=tomcat1
BalancerMember http://192.168.1.51:80 route=tomcat2
</Proxy>
接下來修改Tomcat的server.xml文件,如下:

<!-- Define the top level container in our container hierarchy -->
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

下面用JMeter對配置後的負載均衡做一測試,首先先啓動兩個Tomcat Server,隨後啓動Apache Server,在JMeter中新建測試計劃,在兩個Tomcat Server中的jsp-examples下新建test.jsp(此jsp自己隨便寫兩句就成),然後進行測試,以下是部分取樣器結果:

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中已經附帶了route後綴,.b表示此請求將轉發到route爲b的Tomcat Server上,你將會發現其中的一部分請求的JSESSIONID後綴爲.a,也就是轉發給route爲a的Tomcat Server上。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章