本文的測試環境爲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
tomcat負載均衡兩種session共享方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
tomcat負載均衡
唐文武
2020-02-25 04:03:15
tomcat併發配置
唐文武
2020-02-25 04:03:15
部署 Tomcat 及其負載均衡配置
張九冫
2019-09-09 14:02:45
Tomcat負載均衡原理詳解及配置(Apache2.2.19+Tomcat7.0.12)
flymanhi
2019-07-28 13:46:57
Nginx windows 負載均衡的應用
树小叶
2020-06-22 23:44:30
tomcat負載均衡
唐文武
2020-02-25 04:03:15
tomcat併發配置
唐文武
2020-02-25 04:03:15
Ubuntu14.04下Apache2+mod_jk+tomcat 配置Tomcat服務器集羣負載均衡
人生如代码
2018-08-23 09:29:26
採用ajp代理模式配置Apache+tomcat實現負載均衡
greatmind829
2018-08-21 20:05:19