tomcat負載均衡兩種session共享方式

本文的測試環境爲Windows XP


session共享有兩種方式:


1、請求精確集中定位,即當前用戶的請求都集中定位到一臺服務器中,這樣單臺服務器保存了用戶的session登錄信息,如果宕機,則等同於單點部署,會丟失;


apache中針對上述兩個方法提供了不同的配置項:


2、session共享,多個服務器session拷貝保存,一臺宕機不會影響用戶的登錄狀態;


  sessionsticky:會話不復制,即上述的方法一;


  sessionreplication:會話複製,即上述的方法二;


這裏面先參考另一篇文章,在一臺機器上如何安裝2個同版本的tomcat服務。


在一臺Windows/Ubuntu機器上同時安裝多個Tomcat服務器 http://www.linuxidc.com/Linux/2012-08/69310.htm


採用粘性Session


這種方式將同一用戶的請求轉發到特定的Tomcat服務器上,避免了集羣中Session的複製,缺點是用戶只跟一種的一臺服務器通信,如果此服務器down掉,那就廢了。
採用的model爲mod_proxy_ajp.so,整個配置在tomcat的配置文件中都有相關的註釋,只需作相應修改就OK。
我們選取的是Apache HTTP Server2.2.22,Tomcat7.0.29。
首先安裝Apache HTTP Server,然後修改其配置文件http.conf,首先load三個model,代碼如下:


LoadModule proxy_module modules / mod_proxy.so
LoadModuleproxy_ajp_module modules / mod_proxy_ajp.so
LoadModuleproxy_balancer_module modules / mod_proxy_balancer.so 


然後在此配置文件末端加入以下代碼: 


ProxyPass/ balancer://tomcatcluster/ lbmethod=byrequestsstickysession=JSESSIONIDnofailover=Off timeout=5 maxattempts=3  
ProxyPassReverse/ balancer://tomcatcluster/    
  
<Proxybalancer://tomcatcluster>   
BalancerMemberajp://localhost:8009 route=a   
BalancerMemberajp://localhost:9009 route=b 
</Proxy>




以上代碼配置了Proxy的相關參數,<Proxy>模塊定義了均衡負載的配置,其中兩個Tomcat Server都配置在同一臺服務器上,端口分別爲8009、9009,並配置各自的route,這樣Apache Server就能根據route將請求轉發給特定的Tomcat。
接下來修改Tomcat的server.xml文件,如下: 


<!-- Define an AJP 1.3Connector on port 8009 -->
    < Connectorport="8009"
               enableLookups ="false" redirectPort ="8443"protocol="AJP/1.3"/>


其中的port爲前面<Proxy>中設定的端口,還要配置其route,代碼如下:


<!-- Define the toplevel container in our container hierarchy -->
    < Engine name ="Catalina"defaultHost="localhost"jvmRoute="a">


jvmRoute也須同前面的設置一樣。


編寫一個index.jsp文件:


<%@ page contentType="text/html;charset=GBK" %>   
<%@ page import="java.util.*"%>   
<html><head><title>ClusterTest</title></head>    
<body>   
<%   
 //HttpSession session = request.getSession(true);   
 System.out.println(session.getId());   
 out.println("<br> SESSION ID:" +session.getId()+"<br>");   
%>   
</body>   
</html>  
分別放入tomcat目錄的webapps下面(我這裏實際是放入webapps\balance二級目錄下面,實際使用隨便你怎麼放的,只不過訪問的URL根據你的放置位置動態調整就可以了) 【Linux公社 http://www.linuxidc.com 】 
在chrome瀏覽器中輸入http://localhost/balance/




 


在搜狗瀏覽器中輸入http://localhost/balance/




 


用戶的http請求中的JSESSIONID中已經附帶了route後綴,.b表示此請求將轉發到route爲b的Tomcat Server上,你將會發現其中的一部分請求的JSESSIONID後綴爲.a,也就是轉發給route爲a的Tomcat Server上。


本篇文章來源於 Linux公社網站(www.linuxidc.com)  原文鏈接:http://www.linuxidc.com/Linux/2012-08/69311.htm
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章