3

フロントエンドのロードバランサとしてapacheを使用しているubuntuサーバでのテストを行いました。私のテストの経験から、Tomcatのクラスタリングを使用しない方が良いと言いますが、スタンドアロンとして各ノードを実行すると、セッションの複製がなくても互いを知りません。遅くてTomcatサービスの起動に多くの時間がかかり、メモリを消費します。また、FarmDeployerは、常に展開時に信頼性がなく、全体の構成は、ファーム展開者が機能するために、また各仮想ホスティング、したがって巨大なserver.xmlファイルに対して<Host></Host>要素の下に配置する必要があります。以下は、使用したノードの1つからクラスタ構成を使用したTomcat仮想ホスティングです。Tomcatのクラスタリングは、セッションレプリケーションのためだけですか?

<Host name="site1.mydomain.net" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
<Logger className="org.apache.catalina.logger.FileLogger" 
directory="logs" prefix="virtual_log1." suffix=".log" timestamp="true"/> 
<Context path="" docBase="/usr/share/tomcat/webapps/myapp" debug="0" reloadable="true"/> 

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"> 
<Manager className="org.apache.catalina.ha.session.DeltaManager" 
      expireSessionsOnShutdown="false" 
      notifyListenersOnReplication="true"/> 

     <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
      <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
        address="192.168.1.8" 
        port="4001" 
        selectorTimeout="100" 
        maxThreads="6"/> 
      <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
      <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor"> 
       <Member className="org.apache.catalina.tribes.membership.StaticMember" 
         port="4002" 
         securePort="-1" 
         host="192.168.1.9" 
         domain="staging-cluster" 
         uniqueId="{0,1,2,3,4,5,6,7,8,9}"/> 

      <!-- <Member className="org.apache.catalina.tribes.membership.StaticMember" 
         port="4002" 
         securePort="-1" 
         host="192.168.1.9" 
         domain="staging-cluster" 
         uniqueId="{0,1,2,3,4,5,6,7,8,9}"/> --> 

      </Interceptor> 
     </Channel> 
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> 
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> 

<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 

    <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" 
      tempDir="/usr/share/tomcat/temp/" 
      deployDir="/usr/share/tomcat/webapps/" 
      watchDir="/usr/share/tomcat/watch/" 
      watchEnabled="true"/> 
    </Cluster> 
</Host> 

Tomcatのクラスタリングは本番環境で使用するのに適しているのですか?それとも、セッション複製のための代替方法はありますか。または、上記の設定で何かが不足していて、微調整できますか?

アイデアを歓迎します。ありがとう!

答えて

6

tomcatのセッションフェイルオーバー/セッションレプリケーションソリューションは、固定セッションと非固定セッションの両方をサポートするmemcached-session-manager(msm)です。 msmは、memcached(またはmemcachedプロトコルを使用しているバックエンド)をバックエンドとして使用してセッションのバックアップ/保存を行います。

スティッキモードでは、セッションはtomcatに保存され、memcachedはセッションフェールオーバーのための追加バックアップとしてのみ使用されます。非粘着性モードセッションで

のみのmemcachedに格納され、もはやのTomcatで、非粘着性のセッションと同様にセッションストアは、(古いデータを避けるために)外部でなければならないれています。

membase/membase bucketsの特別なサポートもあります。これは、適切な認証で特定のバケットにアクセスできるホスティングソリューションに役立ちます。

セッションのシリアル化はプラガブルであるため、Javaのシリアル化(およびSerializableを実装するクラス)に縛られません。例えば。利用可能なkryoシリアライザがあります。これはone of the fastest serialization strategies availableです。

msm home pageは主に、スティッキーセッションの方法について説明します。mailing listで検索または質問する可能性のある非スティッキーセッションに関する詳細については、

構成に関する詳細および例は、msm wiki (SetupAndConfiguration)に記載されています。

+0

「memcached」は、tomcatのアドオンのような別の製品ですか? – user465465

+0

ここでmemcachedについて読むことができます:http://memcached.org/about memcachedサーバを1台以上のマシンにインストールし、クライアントはキャッシュ項目をSET/GET/REMOVEできます。 memcached-session-manager(tomcatセッションマネージャとして)は、memcachedに/​​からmemcachedにセッションを格納/取得するクライアントです。 – MartinGrotzke

+0

memcachedはtomcatクラスタより効率的ですか? – user12458

関連する問題