3

Azure の 2 つのスライスにまたがってインストールされた Tomcat の小さなファーム (2 ノード) を実装し、Azure ロード バランサーを前面に配置しています。これは基本的に、ラウンドロビンの非スティッキー セッション バランサーです。

Web アプリケーションは、Tomcat のコンテナー管理セキュリティ (フォーム認証、現在は DataSourceRealm.

ユーザーが認証されていないノードにラウンドロビンされると、予想どおり、認証エラーが発生します。

私はかなりの量の調査を行いましたが、これに対処するための単一の規定された方法はないようです... ノードを Apache サーバーの背後に置き、mod_jk を使用することが提案されています。Cookie を使用して認証を確認するように認証プロセスを再設計すること。Tomcat クラスタリングを使用すること。

これを達成するための最も簡単な方法は何でしょうか? 私たちのアプリは、(Tomcat の CMS 以外の) 何にもセッションを使用しません。必要に応じて JAAS 実装を構築することは嫌いではありませんが、Tomcat の CMS から離れたくはありません。しかし実際には、サポートする必要があるのはクロスノード認証だけです。

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

編集: Azure で memcached を試みたところ、次の結果が得られました。

2013-07-08 21:50:55.463 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@dcd4755
2013-07-08 21:50:55.463 INFO net.spy.memcached.MemcachedConnection:  Reconnecting due to failure to connect to {QA sa=srvr.cloud.com/1XX.1XX.1XX.1XX:11XXX, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
java.net.ConnectException: Connection timed out: no further information
                at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
                at sun.nio.ch.SocketChannelImpl.finishConnect(Unknown Source)
                at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:399)
                at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:247)
                at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:915)

context.xml:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:srvr.cloud.com:11XXX"
    sticky="false"
    sessionBackupAsync="false"
    lockingMode="uriPattern:/path1|/path2"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
    />
4

1 に答える 1

3

サーバーまたはWindows Azure キャッシュでmemcached をホストし、memcached-session-managerを利用して Tomcat サーバー間でセッション データを共有する方法があります。

「memcached-session-manager は、高可用性、スケーラブル、およびフォールト トレラントな Web アプリケーションのために、セッションを memcached に保持する tomcat セッション マネージャーです。スティッキー構成と非スティッキー構成の両方をサポートし、現在 Tomcat 6.x および 7 で動作しています。 x. スティッキー セッションではセッション フェイルオーバー (Tomcat クラッシュ) がサポートされ、非スティッキー セッションではこれがデフォルトです (セッションは、異なる要求に対して異なる Tomcat によってデフォルトで提供されます).単一障害点も存在しないため、memcached が失敗してもセッションは失われません (ただし、Tomcat または別の memcached で使用できます)。

この回答で少し古い議論を参照してください。

于 2013-07-08T20:41:54.953 に答える