公司现在有一个应用,需要集群的服务器。就是我们的web应用跑在多个tomcat服务器上。这时如何在这些服务器上共享全局变量和session。

解决方案 »

  1.   

    获取SESSION的ID,发送到目标服务器,让目标服务器获取这个ID,同时就能获取此ID下的SESSION了...
      

  2.   

    如果业务量大的话。建议建两个jvm 分担一下。
      

  3.   

    建议你们更换服务器,Tomcat本来就适合做集群,如果需要构建集群,最好更换企业级服务器,如WebLogic、WebSphere等,服务器集群内已经实现了你需要的东西
      

  4.   

    Tomcat 虽然通过 server.xml 可以配置集群中 tomcat 实例的 session 共享,但是 tomcat 的这个功能只能保证实验级别的,并不能保证产品应用级别的,毕竟只是一个开源的 Servlet 容器。或许可以这样进行处理,让同一个 IP 地址的用户负载均衡处理时只会分配到同一个 tomcat 实例上,比如 nginx 中的 ip_hash,如果能做到这样的话,tomcat 集群就不需要再配置 session 共享了。关于 tomcat 进行集群处理的配置,可以启动你的 tomcat 后访问:http://localhost:8080/docs/cluster-howto.html或者到 tomcat 站点上访问:http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html
      

  5.   

    进行 ip_hash 也会存在问题,比如集群中的 tomcat 实例挂掉了,那么就会转到其他实例上去。
      

  6.   

    共享session可使用memcached session manager,一个开源的session共享项目,但是只支持tomcat6