我们正在研究是否可以使用 HAProxy 在多个 tomcat 服务器之间进行负载平衡。我们希望对所有请求使用 HTTPs,并通过 JSESSIONID cookie 使用 session 。 HAProxy 本身不支持 SSL,但我们可以在它前面使用 stunnel。
记住这个设置:
1) 我们是否必须使用粘性 session (后续请求总是转到同一个 tomcat 实例)?
2) 如果我们确实必须使用粘性 session ,那么我们如何解决使用新的 webapp 部署更新我们的 tomcat 实例而不必强制用户注销(丢失他们的 session )?
最佳答案
您不必使用粘性 session ,但如果您不使用粘性 session ,则需要使用共享 session 解决方案,如 http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html 中所述。 (JDBC session 存储可能是可行的方法)。我敢打赌,您可以找到在 Redis 或 Memcache 中执行 session 存储的代码,但我没有仔细研究过。
一旦你这样做,它也将解决更新实例的问题,尽管我的经验不是网络应用程序更新自动使 session 无效(似乎只有完全重启才能做到这一点)。不过,我必须仔细研究一下。
关于tomcat - HAProxy 负载平衡 HTTPs 和 session 故障转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6058475/