Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure中的Tomcat负载平衡_Tomcat_Authentication_Azure_Load Balancing - Fatal编程技术网

Azure中的Tomcat负载平衡

Azure中的Tomcat负载平衡,tomcat,authentication,azure,load-balancing,Tomcat,Authentication,Azure,Load Balancing,我们正在Azure中实现一个安装在两个片上的Tomcat小农场(2个节点),并将Azure负载平衡器放在前面。这基本上是一个循环、非粘性会话平衡器 webapp使用Tomcat的容器管理安全(forms)身份验证,目前通过datasourcealm 正如我们预期的那样,当用户循环到他们没有进行身份验证的节点时,他们会得到身份验证错误 我做了大量的研究,似乎没有一种指定的方法来处理这个问题……有人建议我们将节点放在Apache服务器后面,使用mod_jk;我们重新设计身份验证过程,使用cookie

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

webapp使用Tomcat的容器管理安全(forms)身份验证,目前通过datasourcealm

正如我们预期的那样,当用户循环到他们没有进行身份验证的节点时,他们会得到身份验证错误

我做了大量的研究,似乎没有一种指定的方法来处理这个问题……有人建议我们将节点放在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"
    />

一种方法是将memcached托管在服务器上,或者利用在Tomcat服务器之间共享会话数据

“memcached会话管理器是一个tomcat会话管理器,它将会话保存在memcached中,用于高可用、可扩展和容错的web应用程序。它支持粘性和非粘性配置,目前正在使用tomcat 6.x和7.x。用于粘性会话会话故障切换(tomcat崩溃)支持,对于非粘性会话,这是默认设置(默认情况下,不同的Tomcat为不同的请求提供会话)。此外,通过会话迁移支持memcashed故障转移(memcached崩溃)。也不应存在单点故障,因此当memcached失败时,会话不会丢失(但可以在tomcat或其他memcached中使用)。”

请参阅。

上稍微过时的讨论,可能重复: