0

負荷分散側または tomcat のいずれかで構成が不足していると思います。誰かが解決策を助けて提供してくれれば幸いです。

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

  1. このガイドを参照して、tomcat6 の P2P Hazelcast セッション レプリケーションを使用して 2 つの tomcat インスタンスをセットアップします。
  2. hazelcast-all-.jar、hazelcast-tomcat-sessionmanager-.jar、および hazelcast.xml をフォルダー $CATALINA_HOME/lib/ に配置しました。
  3. 以下に示すように、リスナーとコンテキスト構成を更新しました
  4. 以下に示すように、Tomcat フェイルオーバーと jvmRoute パラメータを更新しました。
  5. これまでのところ、お互いの hazelcast インスタンスに接続する tomcat インスタンスを立ち上げることができました。Tomcat ログで確認できます。
  6. ユーザーはロード バランサーに接続し、バランサー メンバーにルーティングされます。ここでは問題ありません。
  7. しかし、Tomcat インスタンスの 1 つを停止してフェールオーバーをテストし、Tom インスタンスに接続していたユーザーが同じセッションで再度サインインすることなく cat インスタンスを継続できることを確認しました。しかし、ロードバランサーが新しいセッションを作成しているようで、ユーザーが再度サインインして cat インスタンスとのセッションを確立する必要があると思います。私はそれを疑っていますが、確かではありません。
  8. それとも、両方の hazelcast インスタンスでセッションが複製および同期されていませんか? - これは事件です
  9. hazelcast セッションを監視できるクライアントはありますか? - 今私がやります

JSESSIONID の代わりに hazelcast.sessionId を設定することを参照するこの問題を参照しましたが、その方法に関する詳細は提供されていません。

バージョン -

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">

猫インスタンス - context.xml

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

アップデート:

以下は、セッションの同期に失敗したのと同じ問題だと思います

4

2 に答える 2

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/
于 2018-01-18T02:10:59.880 に答える