0

我正在尝试构建一个由 6 个节点组成的 glassfish3 集群,该集群具有由 Octopus lb 平衡的 6 个 apache Web 服务器作为前端。负载均衡器允许我根据每个节点上注册的负载发送请求。我的设置如下:
客户端-> 章鱼负载均衡器-> apache web 服务器-> glassfish 服务器。Glassfish 通过 ajp 与 Apache 通信。
我遇到的问题是“似乎”会话没有像它们应该在整个集群上那样复制。
我找到了一些关于使用 glassfish v2 进行集群的文档,并说如果我有一个有 3 个节点的集群,节点 1 会将他的会话复制到 n2 和 n2 到 n3 和 n3 到 n1,这样一两个可能会失败,但是会话仍然存在。
gf3也一样吗?当我开始构建这个集群时,我的想法是每个节点都会将他的会话复制到集群中的所有其他节点。
如果会话复制在版本 2 中工作,我猜我的设置将永远无法工作,因为我请求可能是来自 n1 的服务器,而第二个来自 n5(n1 不会直接将会话复制到 n5),那么我将失去我的会话数据。
有什么建议吗??

4

1 回答 1

0

好的,由于还没有人回答我的问题,所以我就我的问题得出了一些结论。
所以会话在我阅读时被复制,我的意思是每个节点都将他的会话备份到另一个节点。与 glassfish v2 不同,在版本 3 中,此复制是在环 node1->node2->node3->node1 中执行的,每个节点都基于哈希算法将其会话复制到其他节点。

此外,您还需要一个粘性会话负载平衡器,因为如果您从节点 1 获得会话并且节点 1 将其会话复制到节点 3,并且第二个请求被转发到节点 2,那么您就会遇到问题。一个粘性会话将解决这个问题。

现在已经实现的设置是这样的:octopus lb(cannot make it work with sticky session) -> apache http (mod_jk loadbalancer with sticky session) -> glassfish 节点。因此,即使章鱼将我发送到错误的节点,基于会话 cookie 的 apache 负载均衡器也会将我发送到正确的 glassfish 节点。
如果您想知道为什么我使用 octopus lb 作为拳头平衡器 si,因为我已经平衡了其他服务和 php 应用程序。
希望这会帮助某人...

于 2013-02-26T14:54:40.570 回答