我们在2个托管服务器群集中设置了weblogic。请求通过负载均衡器(据称)已配置为粘性会话。但是,我们的请求会在受管节点之间反弹,就像未配置粘性会话一样。
我注意到的一件事是JSESSIONID cookie偶尔会交换主服务器和辅助服务器哈希值。它们应该在用户会话的整个生命周期内保持不变。
E.g。我们正在看
Request 1, JSESSIONID=ABCDEFG...!SERVER1HASH!SERVER2HASH
Request 2, JSESSIONID=ABCDEFG...!SERVER2HASH!SERVER1HASH
Request 3, JSESSIONID=ABCDEFG...!SERVER1HASH!SERVER2HASH
有时候我们甚至会看到哈希被设置为“无”,好像该群集的成员不再存在:
Request 4, JSESSIONID=ABCDEFG...!SERVER1HASH!NONE
有谁知道为什么主服务器和辅助服务器会像这样切换?
答案 0 :(得分:3)
在我们过去遇到的情况中,这是Load Balancer 的问题,它没有或无法将会话识别为服务器1的粘性并将其切换到服务器2这种行为在繁忙的交通中更为明显。
有一次(大约2003年在Weblogic 6.1上),这是因为Cluster multicast address
的格式为x.0.0.1
在与BEA人员进行了长时间的调查之后,发现这是问题的根源。这导致public BEA docs being updated明确说明
不要使用任何x.0.0.1多播 地址x在0到9之间, 包容
答案 1 :(得分:0)
当另一个Web应用程序联机时,当JSESSIONID cookie被更改(在weblogic.xml中)时,我们也遇到了这个问题,但是Apache Weblogic插件使用的是默认的WLCookieName。