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

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

        应用场景:

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

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

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

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

实现原理图示:

基于Redis集群的tomcat集群Session共享_第1张图片

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

        基于Redis集群的tomcat集群Session共享_第2张图片

nginx配置:

         基于Redis集群的tomcat集群Session共享_第3张图片

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

下载链接:TomcatRedisSessionManager

网盘下载:TomcatRedisSessionManager

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

基于Redis集群的tomcat集群Session共享_第4张图片

基于Redis集群的tomcat集群Session共享_第5张图片

基于Redis集群的tomcat集群Session共享_第6张图片

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文件中增加以下两行:
        
        
 
(3)设置tomcat/conf/web.xml 中 session有效期(感觉这个不很重要,默认设置的时间是30,大约在591行)
        
                60
        

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

基于Redis集群的tomcat集群Session共享_第7张图片

基于Redis集群的tomcat集群Session共享_第8张图片

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

下载 index.jsp

基于Redis集群的tomcat集群Session共享_第9张图片

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

基于Redis集群的tomcat集群Session共享_第10张图片

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

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

 

 

你可能感兴趣的:(基于Redis集群的tomcat集群Session共享)