zoukankan      html  css  js  c++  java
  • nginx tomcat cluster session 同步

    前言

    公司系统要做高可用,则需要用多台服务器做成主从或主备集群,这样当一台服务器宕机后,集群还能对外提供服务。 我们拟使用2台服务器做成主从集群,那就必须解决2台服务器中tomcat session同步问题。

    tomcat cluster

    首先采用的同步方案是tomcat自带的解决方案,即便此方案有一定的缺点,由于我们仅作2台服务器的集群,且 此方案对代码无侵入,不需要修改程序代码,所以是我们的首选解决方案。

    对于集群的配置方式详见tomcat 的文档,文档中对session 复制的缺陷、集群配置的方式说的很明了了。 但其中有2个坑,导致我觉得写这篇博人,以免重复踩坑。

    https://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html

    1. 组播地址

    组播地址文档中要求配置成228.0.0.4 , 这个地址是保留地址,用户无需修改为自己服务器的ip地址。

    2. 单机可以实现session复制,多台服务器时无法实现session复制 的问题

    问题描述:在单机上部署2个tomcat, 并配置好session复制。 通过ip1:port1   ip1:port2 查看到的session id 是一致的(如何查看session id请自行google )。 但将此方式部署在2台服务器上时,  通过ip1:port  ip2:port 查看到的session id 是不一致的。

    针对此问题,有些博文还指出 tomcat cluster 不支持多机。 当然 tomcat 不可能这么弱鸡了,这是不可能的。

    问题原因: tomcat session 实现原理是依据cookie, 通过浏览器访问ip1:port  ip2:port,浏览器2个窗口用的是不同的cookie, 从而导致看到的session id不一致。

    解决方案:相信各位朋友看到问题原因,就知道解决方案了, 其实 再加一层nginx 做负载均衡,只有一个浏览器窗口,则保证了cookie一致, cookie 一致则session id 一致。 

  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/hzm112567/p/13396761.html
Copyright © 2011-2022 走看看