集群session共享

服务器集群session共享

别等时光非礼了梦想. 提交于 2019-12-04 21:10:12
假设网站部署在N台服务器上,可能是tomcat集群或者nginx集群,在集群之前有一个负载均衡服务器,使得用户对网站的访问会均衡地访问到服务器集群的各个节点上。 现在A用户开始访问网站,假设分配到b服务器上,那么如果A用户在session生命周期内,再次访问网站(用户在访问的过程中是随机切换到其他服务器),如何获得他的session呢?(因为可能会分配到其他服务器上,或者如何记得之前分配在哪个服务器上?) 这就是服务器集群session共享问题。 解决方案: 1. tomcat session复制 tomcat本身自带session复制功能,开启server.xml中的`cluster`节点,做相应的配置即可。参见 Apache Tomcat 8 (8.0.26) 。tomcat本身的session复制功能并不好用,官方文档也说方式只适合小集群: This works great for smaller cluster but we don't recommend it for larger clusters(a lot of Tomcat nodes). 并且tomcat本身并发性能也并不太好。这种方式更加适合于对并发要求不高的小规模集群。 2. redis存储session 这种方案可能是用得最多的一种 直接配置tomcat的session管理