apache+複数tomcat+memcached共有セッション(windows編)


参照先:
http://lgdvsehome.blog.51cto.com/3360656/878164
Nginx+Tomcat+MemcachedクラスタSession共有(windows)
modベースproxy+Apache 2.2.16+Tomcat 7の負荷等化とクラスタ構成
1、環境
apache+2 tomcat+memcachedサーバ
2、具体的な配置
a)apache http serverプロファイルhttpを修正する.conf、まずloadの3つの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/
ProxyPassReverse/balancer://tomcatcluster/          BalancerMember ajp://localhost:8009 route=a   BalancerMember ajp://localhost:9009 route=b
b)次にTomcatのserverを修正する.xmlファイル:


       
<
Connector
port
="8009"
                enableLookups
="false" 
redirectPort
="8443" 
protocol
="AJP/1.3" 
/>
ポートは、前ので設定したポートであり、routeも構成されます.コードは次のとおりです.


       
<
Engine
name
="Catalina"
defaultHost
="localhost"
jvmRoute
="a"
>
jvmRouteも前の設定と同じにする必要があります.
c)Tomcatのcontextを再修正する.xml
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 

memcachedNodes="n1:localhost:11211" 

requestUriIgnorePattern=".*/.(png|gif|jpg|css|js)$" 

sessionBackupAsync="false" 

sessionBackupTimeout="100"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" 

copyCollectionsForSerialization="false"/>

使用するjarパッケージ:
memcached-2.6.jar(https://code.google.com/p/spymemcached/downloads/detail?name=spymemcached-2.8.4.jar)
javolution-5.4.3.1.jar
memcached-session-manager-1.5.1.jar
memcached-session-manager-tc7-1.5.1.jar
msm-javolution-serializer-1.5.1.jar
msm-kryo-serializer-1.5.1.jar
msm-xstream-serializer-1.5.1.jar
以上のjarパッケージはhttp://code.google.com/p/memcached-session-manager/downloads/listの双曲線コサインを返します.
d)memcachedサーバのインストール、参照
http://blog.csdn.net/shuzui1985/article/details/7907889
3、テストコードの作成
index.jsp
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster Test</title></head>  
<body>
<%
  //HttpSession session = request.getSession(true);
  System.out.println(session.getId());
  out.println("<br> SESSION ID:" + session.getId()+"<br>");  
  
  if(session.getAttribute("jhy") != null){
  	out.println("<br> SESSION attribute:" + session.getAttribute("jhy")+"<br>");
  	String str = "+";
  	session.setAttribute("jhy",session.getAttribute("jhy")+str);
  }else{
  	session.setAttribute("jhy","test");
  	out.println("<br> SESSION attribute set!" +"<br>");
  }
%>
</body>
</html>

4、テスト.
apache+多个tomcat+memcached共享session会话(windows篇)_第1张图片
最初のアクセスは、表示セッションで属性が空であることを返し、属性設定を行うとともに、n 1はmemcachedサーバ上のセッションのノードを表し、bはtomcatサーバノードである.
次にbサーバを閉じると、デフォルトの2番目のカスタムサーバmyTomcat 6になります.

下図のようにセッションIDの前段は変化せずtomatサーバaからのアクセスを継続したが、セッション属性から初期設定testが読み出された
apache+多个tomcat+memcached共享session会话(windows篇)_第2张图片
再アクセスhttp://localhost/balanceあ、次の図のように、すでに累計が始まっています.
apache+多个tomcat+memcached共享session会话(windows篇)_第3张图片
bサーバを再起動し、再アクセスhttp://localhost/balance,
apache+多个tomcat+memcached共享session会话(windows篇)_第4张图片
はい、以上のテストの結果、sessionはクラスタ共有を実現し、そのうちの1つのサーバがダウンタイムした後、フェイルオーバを実現できることが明らかになりました.