首先,此应用程序在非群集环境中运行良好。
我们遇到的问题是ELB在会话期间首先路由到群集中的一台服务器,然后路由到第二台服务器。第二台服务器找不到会话。例如
我们的代码非常典型地用于查找会话(如果没有会话立即返回失败):
HttpSession session = req.getSession(false);
//psuedocode
if session == null then session not authenticated log and return
else session authenticated, log and return
如果第二个呼叫被路由到与登录相同的服务器,则第二个呼叫正常工作。每当一个呼叫(无论是第二个,第三个,第四个,无论什么)转到第二个服务器时,身份验证都会失败,因为它无法在第二个服务器上找到该会话。
我正在寻找是否有人遇到过这样的事情,以及你是如何解决这个问题的。是否更好地在ELB上使用粘性会话,或者使用JK或AJP的Apache Web服务器是更好的选择?
答案 0 :(得分:0)
我头脑中有两个潜在的问题:
<distributable/>
?