基于Redis集群的tomcat集群Session共享

        Tomcat使用Redis缓存Session,集中把Session缓存到Redis服务器中,而不是缓存到服务器的内存中,可以实现集群服务器共享Session。

        应用场景:

            1.当网站接收大量请求时,单一服务器终究无法满足需要处理的负荷量

            2.服务器不稳定(莫名其妙的宕机等),搭建tomcat集群救急。

            3.项目更新迭代时,不影响项目的正常运行

        Tomcat集群中任何一台机器的下线或上线, 能够不影响整个集群对外的一致性.并且具有较好的扩充性还有容错能力。到目前为止,官方支持Tomcat6和Tomcat7,Tomcat8目前还没有正式支持。

实现原理图示:

默认已经安装了redis和tomcat,没有安装可参考tomcat配置:redis安装    tomcat安装

        

nginx配置:

         

在Tomcat目录的lib下,添加相关jar包,并修改相关的配置文件(这个支持tomcat 8 以及redis 3.0,参考readMe.txt)

下载链接:TomcatRedisSessionManager

网盘下载:TomcatRedisSessionManager

可以下载TomcatRedisSessionManager-1.0.zip包,解压后包括所需的jar包和配置文件。如下所示:

1) 将上面jar包拷贝到各个tomcat的lib目录下, 将redis-data-cache.properties拷到tomcat的conf目录下。
 
2) 配置文件修改
(1)  修改redis-data-cache.properties配置文件如下:
        # redis hosts ex: 127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, ....
        redis.hosts=10.0.192.64:6379 (redis服务器IP及端口号)
        # Redis Password
        redis.password= redis (REDIS配置文件中设置的密码)
        # set true to enable redis cluster mode (集群设置为true)
        redis.cluster.enabled=false
 
(2)在tomcat/conf/context.xml文件中增加以下两行:
        <Valve className="com.r.tomcat.session.management.RequestSessionHandlerValve"/>
        <Manager className="com.r.tomcat.session.management.RequestSessionManager"/>
 
(3)设置tomcat/conf/web.xml 中 session有效期(感觉这个不很重要,默认设置的时间是30,大约在591行)
        <session-config>
                <session-timeout>60<session-timeout>
        <session-config>

启动:先启动redis,再启动 tomcat集群,nginx等。

简单测试: 用自己的index.jsp替换 tomcat/webapps/ROOT/index.jsp 文件

下载 index.jsp

关闭 Apache-Tomcat-7.0.88-2服务器后,nginx访问的是Apache-Tomcat-7.0.88-1服务器

还可以获取到Apache-Tomcat-7.0.88-2的session数据,查询redis,会发现redis键值都是加密数据

到这,可以算是结束了吧!

 

 

  • 2
    点赞
  • 0
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页

打赏

橙子笔记

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者