Session WildFly 10 HA部署:不会丢失会话
我整天都在阅读关于这个话题的帖子和文档,但仍然找不到容易理解和信任的东西 我目前在WildFly 10上部署了我的webapp,作为一个简单的war文件 这是一个电子商务网站,在生产几个星期,每次我们需要部署一个新的版本,嗯。。。这非常烦人,因为一些客户可能正在购物,部署显然会使他们丢失会话,这非常糟糕 我需要一个解决方案来部署新的war,而无需重新启动应用程序服务器。起初,我阅读了关于集群的文档(独立配置上的域配置),但我不确定这对我来说是否足够 想象一下,同一个客户在购物车(http会话)中有一些物品,正在访问集群的第一个节点。 然后我把它放下,因为我正在部署。 好的,客户将被重定向到集群的第二个节点,但是。。。会话数据是否仍然可用?他会“丢失”购物车上的物品吗 我读过关于粘性会话的内容,但没有读过关于在WildFly中配置它们的内容。我在AmazonAWS上,所以我也可以使用ELB(负载平衡器)。Session WildFly 10 HA部署:不会丢失会话,session,deployment,jboss,wildfly,high-availability,Session,Deployment,Jboss,Wildfly,High Availability,我整天都在阅读关于这个话题的帖子和文档,但仍然找不到容易理解和信任的东西 我目前在WildFly 10上部署了我的webapp,作为一个简单的war文件 这是一个电子商务网站,在生产几个星期,每次我们需要部署一个新的版本,嗯。。。这非常烦人,因为一些客户可能正在购物,部署显然会使他们丢失会话,这非常糟糕 我需要一个解决方案来部署新的war,而无需重新启动应用程序服务器。起初,我阅读了关于集群的文档(独立配置上的域配置),但我不确定这对我来说是否足够 想象一下,同一个客户在购物车(http会话)中
你能帮我准确地理解我需要学习和使用什么吗?每个WildFly实例都有自己的会话id,它保存在cookie中。此id将仅恢复来自特定节点的会话 粘性会话意味着ELB将始终将用户重定向到集群中的同一节点,因此这并不能完全解决您的问题 需要考虑的一些事情: 聚类 集群可能会有所帮助(不需要是域模式)。启用HA后,会话将在节点之间自动传输,以便客户端浏览器上的cookie能够在任一节点上恢复会话。这当然有一个问题,如果您首先升级其中一个war文件,您可能会有一个对象无法再反序列化,因为它已更改 在AWS上对WF进行集群也有点棘手,因为您不能使用UDP广播来发现彼此。我们使用数据库连接来跟踪节点并进行集群 自己动手 您可以做的一个选择是滚动您自己的解决方案,以根据需要在客户机上保留最少的信息量。比如:
如果你的应用程序足够简单,可以使用tomcat,那么并行部署是非常酷的。回答得很好。非常感谢。让我问你一件事,你说:“我们使用数据库连接来跟踪节点并进行集群”你能告诉我更多关于你是如何做到这一点的细节吗?我一直想写一篇关于这一点的博客文章。基本上,您必须创建一个使用JDBC_-PING的jgroups堆栈。我有一个用于WF9的standalone.xml变量,它在这里实现了这一点:查看从第336行开始的块。您可以在WF10中执行相同的配置。每个服务器将在JGROUPSPING表中的数据库中注册自己,而不是使用UDP来发现彼此。