2017-10-26 11 views
0

ロードバランシング側またはTomcat側で設定が欠落していると思われます。Tomcat6 WebクラスタリングのP2P Hazelcastセッション複製 - セッションの同期化に失敗する

私は何をしようとしていますか?このguide

  • を参照してtomcat6のためのP2P Hazelcastセッションレプリケーションと

    1. セットアップ2のTomcatインスタンスは、私がhazelcast-tomcatの-SessionManagerの-の.jarとhazelcast.xmlで、hazelcast-すべての.jarを配置しています
    2. 下に示すよう
    3. 以下のようにこれまでのところ、私が接続するTomcatのインスタンスを起動することができましたTomcatのフェイルオーバーとのjvmRouteパラメータを更新し、リスナーとコンテキストのconfigsを更新
    4. /libフォルダの$のCATALINA_HOME /お互いのハローキャスティングのインスタンス、私はtomcatのログに表示されます。
    5. ユーザはロードバランサに接続し、バランサのメンバーにルーティングされます。ここで問題はありません。
    6. しかし、Tomcatインスタンスをダウンしてフェールオーバーをテストし、tomインスタンスに接続していたユーザーが、同じセッションでcatのインスタンスをやり直す必要がなくなったことを確認するとき。しかし、私は、ロードバランサが新しいセッションを作成しているようだと思って、catインスタンスとのセッションを確立するために再度サインインするようにユーザーを強制します。私はこれを疑うが、確かではない。
    7. または、両方のハローキャストインスタンスでセッションが複製されずに同期されていませんか? - これが起こっています
    8. ヘビキャストセッションを監視できるクライアントがありますか? - 今、私は

    は、私が代わりにJSESSIONIDのhazelcast.sessionIdを設定指しますがどのように約任意の詳細を提供していません。このissueを参照してくださいでした行います。

    バージョン -

    Apache Haus - 2.2.32 (for load balancing) 
    Hazelcast - 3.8.6 
    Java 8 
    Tomcat - 6.0.48 
    Session objects that need to be clustered are Serializable. 
    stickysession=JSESSIONID 
    

    ロードバランサの設定

    <Proxy balancer://mycluster> 
         BalancerMember http://IPAddress1:8080/app/ route=tom 
         BalancerMember http://IPAddress2:8080/app/ route=cat 
         ProxySet lbmethod=byrequests stickysession=JSESSIONID|jsessionid 
    </Proxy> 
    
        ProxyPass /app/ balancer://mycluster/ 
        ProxyPassReverse /app/ balancer://mycluster/ 
    

    トム・インスタンス - のserver.xml

    <Listener className="com.hazelcast.session.P2PLifecycleListener"/> 
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tom"> 
    

    トム・インスタンス - のcontext.xml

    <Manager className="com.hazelcast.session.HazelcastSessionManager" sticky=true/> 
    

    猫のインスタンス - のserver.xml

    <Listener className="com.hazelcast.session.P2PLifecycleListener"/> 
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="cat"> 
    

    猫のインスタンス - コンテキスト。XML

    <Manager className="com.hazelcast.session.HazelcastSessionManager" sticky=true/> 
    

    アップデート:

    私はthis pageを見て、ロードバランサとしてApache HTTPサーバを使用しての多くの経験を持っていませんが、私はsession sync failure

  • 答えて

    0

    私は以下の設定で動作させました。それはjsessionidとhazelcast.sessionidの両方が必要であると判断したので、セッションの複製はすぐに機能します。

    <Proxy balancer://mycluster> 
        BalancerMember http://IPAddress1:8080/app/ route=tom 
        BalancerMember http://IPAddress2:8080/app/ route=cat 
        ProxySet lbmethod=byrequests stickysession=JSESSIONID|jsessionid|hazelcast.sessionId 
    </Proxy> 
    
    ProxyPass /app/ balancer://mycluster/ 
    ProxyPassReverse /app/ balancer://mycluster/ 
    
    1

    を持っ以下同じ問題であると考えています、私はあなたが次のようにロードバランサの設定を更新する必要があると思う:

    <Proxy balancer://mycluster> 
        BalancerMember http://IPAddress1:8080/app/ route=tom 
        BalancerMember http://IPAddress2:8080/app/ route=cat 
        ProxySet lbmethod=byrequests stickysession=hazelcast.sessionId 
    </Proxy> 
    
    ProxyPass /app/ balancer://mycluster/ 
    ProxyPassReverse /app/ balancer://mycluster/ 
    

    私はヘイルキャストセッションを監視できるクライアントがありますか?

    Hazelcast Management Centerを使用すると、クラスタを監視し、Hazelcast IMapに格納されているセッションエントリを参照できます。すべてのセッションは、IDでキー入力されたHazelcast IMapに格納されます。 Management Centerのデータを見るには、クラスタのメンバでManagement Centerを有効にする必要があります。

    また、Docker code samples for container based session replicationを調べて、セッションレプリケーションの有効な構成を確認することもできます。ロードバランサとしてApacheを使用するものはありませんが、あなたに役立つかもしれないone that uses Nginxがあります。

    +0

    ありがとうございました。働いていた構成について私の答えを見てください。セッションの複製はすぐに機能します。 –

    関連する問題