問題タブ [session-replication]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2191 参照

spring-mvc - Tomcat 7 クラスタリング - Spring Boot および Spring Security でセッション複製が機能しない

Tomcat セッションのレプリケーション構成に関して問題があります。

当社では、mod_jk/tomcat-connectors 1.2.37 (CentOS 7 x64 上で実行) で負荷分散するように構成された Apache HTTPD 2.4.6 の背後で Tomcat 7 サーブレット コンテナーを使用しています。セッション レプリケーションは Tomcat マネージャーと連携しています。つまり、HTML マネージャーにログインした後に Tomcat の 1 つを強制終了した場合、再度ログインする必要はありません ( <distributable />web.xml に設定されているため、確認できます)。サーバーは、catalina.log からお互いを正常に検出しています。

ただし、サンプルの Spring Boot アプリケーションをデプロイし、ユーザーを認証した Tomcat を強制終了すると、ログイン プロンプトが再び表示されます。私たちは長い間この問題を解決しようとしてきましたが、気が狂いそうになっています。何が欠けていますか?構成は次のとおりです。

Tomcat/context.xml:

Tomcat/server.xml:

他の server.xml も同様で、.77 と .79 の IP アドレスが切り替えられています (もちろん、uniqueId も変更されています)。

SpringBootApp/WebSecurityConfig.java

どんな助けでも大歓迎です。

0 投票する
2 に答える
582 参照

java - Tomcat6 Web クラスタリングの P2P Hazelcast セッション レプリケーション - セッション同期の失敗

負荷分散側または 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 を設定することを参照するこの問題を参照しましたが、その方法に関する詳細は提供されていません。

バージョン -

ロード バランサーの構成

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

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

猫インスタンス - server.xml

猫インスタンス - context.xml

アップデート:

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