TomcatクラスタNoSQL高速ストレージによる共有セッションのインスタンス
4341 ワード
セッション共有を実現するには、複数のtomcatサーバ間で負荷等化モジュールを使用してスケジューリングする必要があります.ここではnginx+tomcat+ckvを例に説明します.
tomcatサーバ1を配備する.まず、複数のtomcatサーバを導入し、各サーバが正常にアクセスできるようにします.2.memcached-session-manager-${version}をダウンロードします.JAr、このjarパッケージにはmsmのコア機能が含まれています.異なるtomcatバージョンから対応するサポートライブラリをダウンロード:Tomcat 6:memcached-session-manager-tc 6-${version}jarTomcat7:memcached-session-manager-tc7-${version}.jarTomcat8:memcached-session-manager-tc8-${version}.jar3. memcachedプロトコルをサポートするためにspymemcached-2.1.1もダウンロードする必要がある.jar4. シーケンス化シナリオを決定し、jarパッケージに対する異なるシナリオの依存関係は、•kryo-serializermm-kryo-serializer,kryo-serializers-0.11(0.11 is needed,as 0.20+is for kryo 2)、kryo,minlog,refectasm,asm-3.2•javolution-serializerm- javolution-serializer,javolution-javolution-serializer,javolution-5.4.3.1•xstream-xstream-serializer,xstream,xmlpull,xpp3 3 pp 3 3.xpp 3._min•flexjson-serializermsm-flexjson-serializer,flexjson•javaはシーケンス化スキームspymemcached-2.11.1を持っている.JArはすでに持参しており、性能は相対的に悪い.準備したjarパッケージをtomcatのlibディレクトリの下に全部置いて、confディレクトリの下のcontextを変更する必要があります.xmlファイルです.javaのシーケンス化スキームを例に、contextラベルの下に次の内容を追加します.
nginxサーバをインストールすべてのtomcatサーバを構成した後、負荷等化機能を実現するためにnginxサーバをインストールする必要があり、nginx開始ページが正常に開くことを確保した後、nginxディレクトリの下のnginxを開く.confファイル、次の内容を追加します.
テストコードを作成する最後に、jspページを実装する必要があります.テスト結果、jspページのサンプルコードは以下の通りです.
テスト結果nginxサーバへのアクセスhttp://119.29.82.140:13355/ShareSession/ShowSession、ページを繰り返し更新し、テスト結果:
tomcatサーバ1を配備する.まず、複数のtomcatサーバを導入し、各サーバが正常にアクセスできるようにします.2.memcached-session-manager-${version}をダウンロードします.JAr、このjarパッケージにはmsmのコア機能が含まれています.異なるtomcatバージョンから対応するサポートライブラリをダウンロード:Tomcat 6:memcached-session-manager-tc 6-${version}jarTomcat7:memcached-session-manager-tc7-${version}.jarTomcat8:memcached-session-manager-tc8-${version}.jar3. memcachedプロトコルをサポートするためにspymemcached-2.1.1もダウンロードする必要がある.jar4. シーケンス化シナリオを決定し、jarパッケージに対する異なるシナリオの依存関係は、•kryo-serializermm-kryo-serializer,kryo-serializers-0.11(0.11 is needed,as 0.20+is for kryo 2)、kryo,minlog,refectasm,asm-3.2•javolution-serializerm- javolution-serializer,javolution-javolution-serializer,javolution-5.4.3.1•xstream-xstream-serializer,xstream,xmlpull,xpp3 3 pp 3 3.xpp 3._min•flexjson-serializermsm-flexjson-serializer,flexjson•javaはシーケンス化スキームspymemcached-2.11.1を持っている.JArはすでに持参しており、性能は相対的に悪い.準備したjarパッケージをtomcatのlibディレクトリの下に全部置いて、confディレクトリの下のcontextを変更する必要があります.xmlファイルです.javaのシーケンス化スキームを例に、contextラベルの下に次の内容を追加します.
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:10.66.121.134:9101"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
sticky="false"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
copyCollectionsForSerialization="false" />
のうちn 1はmemcachedプロトコルをサポートするキャッシュサーバである、複数設定可能である、ここではckvサーバであり、managerのその他のオプションおよび説明は[ここを参照]可能である.nginxサーバをインストールすべてのtomcatサーバを構成した後、負荷等化機能を実現するためにnginxサーバをインストールする必要があり、nginx開始ページが正常に開くことを確保した後、nginxディレクトリの下のnginxを開く.confファイル、次の内容を追加します.
upstream tomcats {
server 10.104.37.25:8080 weight=1;
server 10.104.42.64:8080 weight=1;
}
server {
listen 13355;
server_name tomcats;
charset utf-8;
location / {
proxy_pass http://tomcats;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
}
}
ここではリスニングポートを13355に変更し、tomcatsの中の2つのipは2つのtomcatサーバであり、weightは重みであり、観察効果を容易にするために重みを同じに設定します.テストコードを作成する最後に、jspページを実装する必要があります.テスト結果、jspページのサンプルコードは以下の通りです.
<%@ page language="java" import="java.util.*,java.net.InetAddress" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'ShowSessionJsp.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
out.println("Session id is " + session.getId());%>
<br/>
<%
out.println("Server IP is "+InetAddress.getLocalHost().getHostAddress());%>
<br/>
<%
out.println("Server name is "+request.getServerName());
%>
</body>
</html>
テスト結果nginxサーバへのアクセスhttp://119.29.82.140:13355/ShareSession/ShowSession、ページを繰り返し更新し、テスト結果:
Session id is 5526F95AEB3#88C6F1C0B9C7A5B92E23-n1
Server IP is 127.0.0.1
Server name is tomcats
Session id is 5526F95AEB3E88C6F1C0B9C7A5B92E23-n1
Server iIP is 10.104.42.64
Server name is tomcats
の1つのtomcatサーバはnginxと同じマシン上で、ipアドレスが変化していることを見ることができ、session idは変わらず、共有sessionが成功したことを示している.Managerでの設定により、複数のキャッシュノードを設定し、キャッシュサーバの災害対応を実現することもできますが、ここでは説明しません.また、負荷等化はapache等により実現することもできる.