问题标签 [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 回答
750 浏览

glassfish - glassfish负载均衡器工作原理

我在 glassfish 3.1.1 和 iPlanet Web Server 上配置了具有两个实例的集群作为负载均衡器(在同一台机器上)。对于 glassfish 提供的测试应用程序,一切正常(并且此应用程序启用了会话复制)。

但是当我尝试让自己的应用程序工作时,会发生以下情况:当我在特定实例的端口(即 28080 和 28081)上发送请求时它会响应,但是当我尝试通过负载均衡器(端口 81)发送请求时我得到错误 404。我的应用程序尚未启用会话复制,但它可以建立连接并为每个实例创建另外两个会话。我想用负载均衡器获得类似的效果。

所以我想确定:

  1. 负载均衡器是否需要会话复制才能正常工作?
  2. 有谁知道这个错误的任何其他原因?

来自 iPlanet 日志的消息:

附加结论:

(81 - iPlanet 上的 http-listener 端口)

当我发送时GET http://localhost:81/testApp,负载均衡器将其传递给 glassfish 并返回正确的站点。但是当我对我的测试应用程序尝试相同的操作时,GET http://localhost:81/myAppiPlanet 在它自己的资源中查找这个站点(文档目录如上面的日志)

myHost-obj.conf 的片段:

0 投票
1 回答
211 浏览

time - Jboss集群复制时间

我正在为我的应用程序使用集群设置,其中我使用 mod_cluster 作为负载平衡器,使用 Jboss 作为应用程序服务器。基本上,每当一个节点发生故障时,都需要一些时间(在我的情况下是 10-15 秒)将整个会话复制到另一个节点即使它立即将请求转发到新节点,但复制整个会话至少需要 10 秒,如果我尝试在 10 秒之前访问该应用程序,则页面显示会话已过期但如果我尝试在 10 秒后访问它秒它工作得很好。所以基本上想知道为什么即使我的会话只有1个字符的变量,为什么要花这么多时间,我怎样才能最小化这个时间?

0 投票
0 回答
541 浏览

grails - Gails - 应用程序停止时的 Hazelcast IllegalStateException

我正在尝试某种方式来集群化我的 grails 应用程序,我发现 Hazelcast 非常有趣。

我做了一个小测试应用程序来尝试与 grails 的集成。

我按照网站上的文档进行了会话复制。

我发现当我停止一个节点时,它开始抛出很多这样的异常:

谁能解释我为什么会发生以及如何解决它?
谢谢

0 投票
1 回答
984 浏览

amazon-ec2 - Glassfish 和 mod_jk - 负载平衡和会话复制

我正在使用 Glassfish 和 mod_jk 配置环境以提供负载平衡和会话复制。

我的 worker.properties 如下:

我已经完成的步骤是:从我的服务器创建了两个节点,n1 和 n2 集中管理(通过 SSH):

创建了一个集群 c1:

创建了两个实例:

开始实例 i1 开始实例 i2

创建了一个 http-listener 和一个 network-listener

然后我创建了路由 JVM 选项:

...以及根据 jvmRoute 的 sysyem 属性:

我希望能够使用我的应用程序访问 server_ip/app_name。

如果我查看 cookie,我可以看到:

  • 一个 JSESSIONIDVERSION,格式:value:number_of_operation
  • 一个 JSESSIONID,格式:value.i1
  • 一个 JREPLICA,格式:i2

(或与 i2 和 i1 交换相同)。这让我假设复制设置正确,但是当我停止 i1 时,我得到的是一个空白页并且 cookie 没有变化(我想 JSESSIONID 应该更改最后一部分,“.i2”中的“.i1”以使请求被路由到 i2,我错了吗?)。谢谢,安德里亚

0 投票
1 回答
410 浏览

nosql - 使用 Jetty 8 防止节点会话超时并通过 MongoDB 复制会话

我正在使用 Jetty 8,目前有两个实例设置并在循环负载均衡器后面运行。我已将其配置为通过 MongoDB 使用会话复制。它工作得很好,有两个例外。我将在这里包括一个,另一个在另一个问题中。

  1. 当另一个节点上的同一会话超时时,可以使其中一个节点上的会话保持活动状态。一旦您点击超时节点,行为就好像会话已过期,即使存在来自另一个节点上的用户的活动。

有没有人有什么建议?我即将开始深入研究 jetty-nosql 的实现,但如果有人可以为我节省一些时间,我会很高兴。

0 投票
1 回答
407 浏览

spring-security - 春季“记住我”不适用于码头和会话复制

我正在使用 Jetty 8,目前有两个实例设置并在循环负载均衡器后面运行。我已将其配置为通过 MongoDB 使用会话复制。我的应用程序使用弹簧安全性。它工作得很好,有两个例外。我将在这里包括一个,另一个在另一个问题中。

  1. Spring Security 的“记住我”不能正常工作。如果用户登录并请求“记住我”,那么它将正常工作,假设用户未来的身份验证请求命中了在原始登录期间命中的特定节点。但是,如果未来的身份验证请求命中另一个节点,则该节点似乎不知道“记住我”请求,因此会提示用户输入凭据。

有没有人有什么建议?我即将开始深入研究 spring security 的记住我代码和 jetty-nosql 的实现,但如果有人能节省我一些时间,我会很高兴的。

此外,我已经尝试了基于 cookie 哈希的“记住我”令牌以及数据库持久化“记住我”令牌方法,两者都有相同的问题。

0 投票
1 回答
116 浏览

spring - 速度聚类问题

在负载均衡器下运行多个 tomcat 的集群环境中,我们遇到了一个问题,我们认为这可能是速度引擎,随着环境从简单节点转移到集群,它需要某种配置。

这就是我遇到的方式,如果我按照以下步骤操作,就可以重现。步骤是;例如,在集群开发环境中,开发人员有两台不同的(虚拟)服务器,每台服务器 Tomcat 与另一台通信,发送序列化会话,另一台在其末端反序列化。这样,如果一个服务器关闭(或未响应),两个服务器都具有相同的会话,另一台服务器将处理该请求。用户会话持续和任何类型的服务器故障都不会导致用户烦恼。

假设在浏览器中浏览应用程序时,您正在观察每个服务器的“catalina.out”日志。将有一台服务器将处理您的所有请求,而另一台服务器只是同步会话(处于待机状态)。您杀死了服务器的 tomcat,所有请求都在其中提供服务,现在备用服务器已准备好为您提供服务。您浏览到一个页面,您可以在其中搜索记录,该页面最初显示为空。有一次,你点击搜索,你会看到 3 条记录,但每一行列第一列都有一些奇怪的东西:

#dotPaddingWithoutTitle 是一个速度宏;似乎它无法在这种情况下呈现它,但我不明白为什么整个视图(页眉、页脚、导航、工具栏等)能够呈现但不是这个。

如果您对此有任何想法,请提供帮助。谢谢。

0 投票
0 回答
774 浏览

jsf-2 - 在 JSF 应用程序中使用 Glassfish 集群避免丢失 Session 和 ViewState 数据

我们在集群应用程序中使用此配置:

glassfish-web.xml :

会话由 Glassfish 存储和复制,问题是如果集群出现问题并且需要重新启动,我们将丢失所有 Session 和 ViewState 数据。

有没有办法插入像 memcached 或 mysql 这样的外部存储来存储 Session 和 ViewState 信息,以确保我们永远不会丢失我们的客户端数据?

PS:我们广泛使用@ManagedBean @ViewScoped,我们真的希望将视图状态保持在安全的地方

0 投票
2 回答
2516 浏览

java - 使用 JBoss EWS 2.0 进行集群

在我们的生产环境中,我们使用JBoss Enterprise Web Server 2.0,它基本上是 Apache HTTP Server 和稍微修改的 Tomcat 7 的捆绑。我们有两个节点,在不同的服务器上,我们正在尝试设置集群节点之间的会话故障转移(复制)。我最初的想法是简单地遵循Tomcat 7 Clustering How-To。但是按照上述指南(使用示例中的配置)并启动服务器会出现此错误:

同样在日志中:

因此,JBoss EWS 附带的 Tomcat 7 版本似乎没有附带标准的 Tomcat 7 集群库。相反, Tomcat安装的文件夹中似乎有很多mod_cluster-*.jar文件。lib

我在这个主题上找到的所有文档都是如何在 Apache HTTP Server 级别配置集群。但是我们前面并没有真正使用Apache HTTP,所以它不适用。现在我想知道我是否应该从标准的 Tomcat 7 安装中添加集群库,或者是否有另一种“标准”方式使用 JBoss EWS 配置集群?有人用 JBoss EWS 设置集群吗?欢迎任何见解。

编辑:

我在文档JBoss Enterprise Web Server Component Details中找到了这个注释

Apache Tomcat 7 - 集群已被删除 - Red Hat® 认为此功能不适用于中型或大型生产部署。

这就解释了为什么 Tomcat 集群库不可用。

编辑:

更多信息,可在JBoss EWS 2.0.0 的发行说明中找到

Tomcat 集群已从 Apache Tomcat 6 和 7 组件中排除。特别是 catalina-tribes.jar 和 catalina-ha.jar 文件已被删除。这消除了会话复制的可能性。

最后一句话特别扎心……

0 投票
0 回答
302 浏览

java - 使用 cloudfoundry 属性

我想使用本节中描述的 cloudfoundry 属性- http://docs.cloudfoundry.com/frameworks/java/spring/spring.html#accessing-cloud-foundry-properties 不在spring xml文件中,而是在上下文中。 xml(比如说 tomcat context.xml 文件)文件,它将帮助我对 cloudfoundry 中的会话复制进行一些研究。我想在该 context.xml 文件中获取 connection.host、connection.port 等,以指定基于 JDBC 的会话存储。

但是我在这样做时遇到了问题,因为这些属性在 spring 配置文件中工作得很好,但在其他文件中却没有。有人可以帮我吗?