glassfish3 + apache + octopuslb

时间:2013-02-20 09:17:38

标签: glassfish glassfish-3

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

1 个答案:

答案 0 :(得分:0)

好的,由于没有人回答我的问题,我回答了一些关于我的问题的结论 因此会话在我读取时被复制,我的意思是每个节点将其会话备份到另一个节点。与在版本3中的环节点1 - >节点2 - >节点3 - >节点1中执行此复制的glassfish v2不同,每个节点基于散列算法将其会话复制到其他节点。

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

现在实施的设置如下: 章鱼lb(不能使它与粘性会话一起工作) - > apache http(mod_jk loadbalancer with sticky session) - >玻璃鱼节点。因此,即使章鱼将我发送到错误的节点,基于会话cookie的apache负载均衡器也会将我发送到正确的glassfish节点。
如果你想知道为什么我使用章鱼lb作为拳头平衡器,因为我已经平衡了其他服务和php应用程序。
希望这会对某人有所帮助......