【问题标题】:Tomcat load balancing in AzureAzure 中的 Tomcat 负载平衡
【发布时间】:2014-04-23 03:18:56
【问题描述】:

我们正在实现一个小型 Tomcat 场(2 个节点),安装在 Azure 中的两个切片上,并将 Azure 负载均衡器放在前面。这基本上是一个循环、非粘性会话平衡器。

webapp 使用 Tomcat 的容器管理安全性(表单身份验证,目前通过 DataSourceRealm。

正如我们预期的那样,当用户轮询到他们未对其进行身份验证的节点时,他们会遇到身份验证错误。

我已经进行了大量研究,但似乎没有一种规定的方法来处理这个问题……有人建议我们将节点放在 Apache 服务器后面并使用 mod_jk;我们重新设计了身份验证过程以使用 cookie 来确认身份验证;我们使用 Tomcat 集群。

我们实现这一目标的最简单方法是什么?我们的应用程序不使用任何会话(Tomcat 的 CMS 除外)。我们宁愿不离开 Tomcat 的 CMS,但我们并不反对在必要时构建 JAAS 实现。但实际上,我们唯一需要支持的是跨节点身份验证。

任何帮助表示赞赏!

编辑:我们尝试在 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"
    />

【问题讨论】:

标签: tomcat authentication azure load-balancing


【解决方案1】:

一种方法是在服务器上托管 memcached,或 Windows Azure Caching,并利用 memcached-session-manager 在 Tomcat 服务器之间共享会话数据。

"memcached-session-manager 是一个 tomcat 会话管理器,将会话保存在 memcached 中,用于高可用性、可扩展和容错的 Web 应用程序。它支持粘性和非粘性配置,目前正在使用 tomcat 6.x和 7.x. 支持粘性会话会话故障转移 (tomcat 崩溃), 对于非粘性会话这是默认设置 (默认情况下, 一个会话由不同的 tomcats 为不同的请求提供服务). 还支持 memcashed 故障转移 (memcached 崩溃)通过会话迁移。也不应有单点故障,因此当 memcached 失败时,会话不会丢失(但在 tomcat 或另一个 memcached 中可用)。"

this answer 上查看稍微过时的讨论。

【讨论】:

    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多