1. 程式人生 > >apache+Tomcat叢集下session複製

apache+Tomcat叢集下session複製

原地址:https://blog.csdn.net/weiweiai123456/article/details/41750887


因為工作需要,本人需要在本機上做一個apache負載均衡Http請求,交給Tomcat叢集處理,並且Session要在不同的Tomcat上進行復制的Demo。現貼出過程如下:

http://wenku.baidu.com/link?url=1Wy1oeJDLaBxnSTPLH0NPyYy0EGP1JokrYQfQhFj_uOt4Dhyh8Kg-q3N1TZhemu8otIHuK5JPrTOpXHAAu9fD1Q9sWFT-MhMm73n3uEz9KO           --好文章,重點推薦


http://www.open-open.com/lib/view/open1375282916217.html   --配合JK外掛apache負載均衡

http://nanquan.iteye.com/blog/1533906  

http://jackandroid.iteye.com/blog/627147

http://www.cnblogs.com/peter9/archive/2011/12/18/2362138.html


一:準備工作

[html]  view plain  copy
  1. LoadModule proxy_module modules/mod_proxy.so  
  2. LoadModule proxy_ajp_module modules/mod_proxy_ajp.so  
  3. LoadModule proxy_balancer_module modules/mod_proxy_balancer.so  
  4. LoadModule proxy_connect_module modules/mod_proxy_connect.so  
  5. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so  
  6. LoadModule proxy_http_module modules/mod_proxy_http.so  
  7. LoadModule proxy_scgi_module modules/mod_proxy_scgi.so  
  8. #LoadModule reqtimeout_module modules/mod_reqtimeout.so  
  9. #LoadModule rewrite_module modules/mod_rewrite.so  
  10. LoadModule setenvif_module modules/mod_setenvif.so  

基本知識: apache是http伺服器,根據一定的配置,使用反向代理,處理http請求並轉發給相應的tomcat進行處理。session的複製有兩種方法。

1.1.粘性session。

同一個視窗的請求會交給同一個tomcat處理,避免了Session在不同的Tomcat之間跳來跳去。缺點是這臺Tomcat掛掉則session就會空了。 需要在workers.properties檔案中配置如下: [html]  view plain  copy
  1. worker.lbcontroller.sticky_session=True  

1.2.session複製

通過廣播的形式進行不同tomcat間session的複製,對伺服器效能有影響,需要在web.xml中配置如下: [html]  view plain  copy
  1. <distributable/>    

1.3.apache配置

1.3.1.httpd.conf配置

httpd-vhosts.conf


進入到httpd.conf目錄檔案: [html]  view plain  copy
  1. LoadModule proxy_module modules/mod_proxy.so  
  2. LoadModule proxy_ajp_module modules/mod_proxy_ajp.so  
  3. LoadModule proxy_balancer_module modules/mod_proxy_balancer.so  
  4. LoadModule proxy_connect_module modules/mod_proxy_connect.so  
  5. LoadModule proxy_ftp_module modules/mod_proxy_ftp.so  
  6. LoadModule proxy_http_module modules/mod_proxy_http.so  
  7. LoadModule proxy_scgi_module modules/mod_proxy_scgi.so  
去掉這七行前的註釋,開啟這些模組。
[html]  view plain  copy
  1. Include conf/extra/httpd-vhosts.conf  
找到如上程式碼行,去掉註釋
進入到httpd.conf檔案最低行,新增如下: [html]  view plain  copy
  1. #分配請求  
  2. ProxyRequests Off     
  3. <proxy balancer://cluster>      
  4.     BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=tomcat1   
  5.     BalancerMember ajp://127.0.0.1:10009 loadfactor=1 route=tomcat2  
  6. </proxy>   
這裡127.0.0.1表示本地測試環境,類似localhost,要注意引數9009和route,這裡表示apache會根據一定規則把請求分發給本地的9009埠,叫做tomcat1的Tomcat上和本地的10009埠,叫做tomcat2的Tomcat上。

1.3.1.httpd-vhosts.conf配置

進入到httpd-vhosts.conf,最後一行新增如下程式碼,虛擬站點: [html]  view plain  copy
  1. <VirtualHost *:80>              
  2.     ServerAdmin [email protected]             
  3.     ServerName 127.0.0.1            
  4.     ServerAlias localhost              
  5.     ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On             
  6.     ProxyPassReverse / balancer://cluster/             
  7.     ErrorLog "logs/lbtest-error.log"             
  8.     CustomLog "logs/lbtest-access.log" common         
  9. </VirtualHost>  


三:Tomcat配置

我有兩個tomcat,如圖:

這裡科普下:我因為是在本機上測試,所以不同的Tomcat的相關埠是不能重複的。
Tomcat中有三種埠,admin port埠(預設8005),http埠(預設8080),AJP埠(預設8009)。 首先修改tomcat1的相關埠配置,在server.xml


Tomcat1:

3.1.修改伺服器埠為9005




3.2.修改連線埠為9080




3.3.修改jvmRoute和相關ajp埠


注意這裡和之前的apache中配置匹配:如下: [html]  view plain  copy
  1. BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=tomcat1   

3.4.tomcat配置中開啟Session複製

找到如下程式碼: [html]  view plain  copy
  1. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="8"> </span>  
在其下面加入如下語句:


Tomcat2上配置類似。

四:應用配置

4.1.Tomcat1上建立應用目錄:





4.2.Tomcat1上test.jsp:

[html]  view plain  copy
  1.   <%@ page contentType="text/html; charset=UTF-8" %>  
  2. <%@ page import="java.util.*" %>  
  3. <html><head><title>Tomcat Cluster Demo</title></head>  
  4. <body>  
  5. Server Info:  
  6. <%  
  7. out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>  
  8. <%  
  9.   out.println("<br> ID " + session.getId()+"<br>");  
  10.     
  11.   String dataName = request.getParameter("dataName");  
  12.   if (dataName != null && dataName.length() > 0) {  
  13.      String dataValue = request.getParameter("dataValue");  
  14.      session.setAttribute(dataName, dataValue);  
  15.      System.out.println("application:" + application.getAttribute(dataName));  
  16.      application.setAttribute(dataName, dataValue);  
  17.   }  
  18.   out.print("<b>Session List</b>");  
  19.   Enumeration<String> e = session.getAttributeNames();  
  20.   while (e.hasMoreElements()) {  
  21.      String name = e.nextElement();  
  22.      String value = session.getAttribute(name).toString();  
  23.      out.println( name + " = " + value+"<br>");  
  24.          System.out.println( name + " = " + value);  
  25.    }  
  26. %>  
  27.   <form action="test.jsp" method="POST">  
  28.     Name:<input type=text size=20 name="dataName">  
  29.      <br>  
  30.     Value:<input type=text size=20 name="dataValue"

    相關推薦

    apache+Tomcat叢集session複製

    原地址:https://blog.csdn.net/weiweiai123456/article/details/41750887 因為工作需要,本人需要在本機上做一個apache負載均衡Http請求,交給Tomcat叢集處理,並且Session要在不同的Tomcat上進行復制的D

    apache負載均衡和tomcat6叢集session複製

    系統環境:Windows XP SP3 ,jdk1.5.0_05 軟體版本:apache_2.2.11-win32-x86-openssl-0.9.8i.msi apache-tomcat-6.0.16 apache-tomcat-6.0.18 備註:tomcat可以下載壓縮包

    apache+tomcat叢集遇到的問題

    問題1. 前提: web.xml下要加<distributable/> 或 在tomcat的context.xml的context標籤屬性加入distributable="true"(未嘗試) 遇見問題:

    基於redis實現tomcat8的tomcat叢集session持久化實現(tomcat-redis-session-manager二次開發)

    前言:本專案是基於jcoleman的tomcat-redis-session-manager二次開發版本1、修改了小部分實現邏輯2、去除對juni.jar包的依賴3、去除無效程式碼和老版本tomcat操作API4、支援tomcat 8 ,更高版本未測試原始碼提供:下載目錄:注

    tomcat叢集配置session,並用nginx做反向代理和負載均衡

    一、tomcat伺服器配置session共享 tomcat配置session共享,有兩種方式 ①通過修改配置檔案,讓tomcat不停的廣播自己的session給其他的tomcat,建議使用5臺以下的伺服器,5臺及以上,建議使用方式二 ②將使用者資訊存入redis,每臺

    傳統分散式架構部署(apache+tomcat叢集

    背景: 單一伺服器部署應用在往往隨著應用人數的增加和頻率的提高及後續資料量的增大會達到瓶頸,伺服器會出現卡頓、崩潰等情況;所以在不改變應用結構的情況下只能進行部署架構上的變化,即使用apache(Apache HTTP Server(“httpd”))作為前置,進行負載均衡

    Apache+tomcat叢集和負載均衡(httpd.conf,workers.properties,uriworkermap.properties)

    用apache和tomcat搭建叢集,實現負載均衡 一、叢集和負載均衡的概念(一)叢集的概念  叢集(Cluster)是由兩臺或多臺節點機(伺服器)構成的一種鬆散耦合的計算節點集合,為使用者提供網路服務或應用程式(包括資料庫、Web服務和檔案服務等)的單一客戶檢視,同時提供

    apache+tomcat叢集搭建,包括負載均衡

    傳統的Java Web專案是通過tomcat來執行和釋出的。但在實際的企業應用環境中,採用單一的tomcat來維持專案的執行是不現實的。tomcat 處理能力低,效率低,承受併發小(1000左右)。當用戶請求較少時,單一的tomcat能夠快速響應使用者請求,但如果訪問量一大,tomcat處理能力跟不上,

    Apache+Tomcat叢集實現反向代理負載均衡

    一. Apache+Tomcat叢集實現反向代理的負載均衡的原理: Apache作為排程器,轉發HTTP請求。然後等待實際伺服器的HTTP響應,並轉發給使用者。 Tomcat叢集作為實際的伺服器,處理HTTP請求。二. 需要安裝的程式: 1. Apache2.2.4 2.

    tomcat叢集擴充套件session集中管理,Memcached-session-manager使用總結

    最近在研究tomcat做負載均衡的時候如何實現ha,還有就是不採用session複製的方法做叢集。 想到的是將session全部儲存在後端的快取伺服器中。 正好網上有這麼一個工具Memcached-session-manager(後面簡稱msm),所以直接扒下來用了。 地址如下:http://code.goo

    配置WebLogic Server 11g 叢集Session複製(Windows)

    啟動被管理伺服器Cluster_ManagedServer_3,Cluster_ManagedServer_4,在瀏覽器中輸入http://172.20.50.96:8080/ShoppingCart/,進入購物商店介面:

    分散式架構學習之:032--使用Redis3.0叢集實現Tomcat叢集Session共享

    redis.properties # redis hosts ex: 127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, .... re

    apache+tomcat叢集和負載均衡配置

    Apache+tomcat 負載均衡的入門配置這份文件只是一個初步的配置負載均衡的文件,沒有涉及過多的效能優化的東西所以也就不多言了,直接切入主題。 一、準備工作 安裝JDK並配置環境變數。這裡要求至少1.5以上版本。 安裝 apache2.2 。我的安裝目錄為:D:\A

    多個tomcat之間的session複製

    用tomcat做負載叢集時, 經常會用到session複製(Session Replication), 很多例子會告訴我們要配置apache或者其他的Web Server. 而事實上, 單純從session複製的角度講, 是不需要Web Server的. tomcat的session複製分為兩種, 一

    windowsnginx+tomcat叢集,實現session複製共享

    兩臺不同伺服器  ip1、ip2。ip1安裝tomcat1,埠8005,8081,8009、nginx,提供nginx外網埠80,ip2安裝tomcat2,埠8006,8082,8010。 1、安裝apach tomcat。 2、安裝ng,下載解壓安裝到ip1,根據需要修改

    tomcat叢集環境實現負載均衡、session共享

    一、 高可用      高可用HA(High Availability)是分散式系統穩定執行必須考慮的因素之一,它指的是通過處理減少系統不能提供服務的時間。比如說系統能夠一直正常提供服務,我們就說這個系統可用性為100%。      我們知道,單點系統是高可用的公敵,線上系統應該儘量避免

    Apache shiro叢集實現 (六)分散式集群系統的高可用session解決方案---Session共享

          Apache Shiro的基本配置和構成這裡就不詳細說明了,其官網有說明文件,這裡僅僅說明叢集的解決方案,詳細配置:shiro web config     Apache Shiro叢集要解決2個問題,一個是session的共享問題,一個是授權

    web叢集之一 linuxapache+tomcat負載均衡配置-筆記

    負載均衡叢集配置(7):Apache配置——建立workers.properties    httpd.conf的最後新增的配置中workers.properties檔案是不存在的,需要我們自己在apache/conf路徑下建立。workers.properties檔案用於對負載均衡的負載器worker (

    weblogic 12C叢集環境session複製

    做過weblogic叢集環境的人應該都清楚,要想實現session同步,必須滿足兩個條件:第一,在weblogic.xml裡面增加session同步相關的程式碼;第二,所有放入session的類都要序列化。    但是,我終於還是栽了。兩個條件明明都滿足了,但就是“有些”物件就是不能同步。    我以前使用s

    apache + tomcat + mod_jk 叢集部署及Session共享 和 遇到的問題

    系統  win7 64位   jdk :1.6   64位 java version "1.6.0_45" Java(TM) SE Runtime Environment (build 1.6.0_45-b06) Java HotSpot(TM) 64-Bit Server