• linux下实现redis共享session的tomcat集群


            为了实现主域名与子域名的下不同的产品间一次登录,到处访问的效果,因此采用rediss实现tomcat的集群效果。基于redis能够异步讲缓存内容固化到磁盘上,从而当服务器意外重启后,仍然能够让session还未失效的用户重新登录,这正是相对于memcached的优点,因此采用redis作为session共享存储工具。

    • redis安装

                  参考:linux下安装redis并自启动

    • 发布tomcat-redis-session-manager.jar

                 从 https://github.com/jcoleman/tomcat-redis-session-manager下载tomcat-redis-session-manager的最新源代码,并使用gradle发布成jar格式的类包。

                参考:使用gradle构建java项目

    •    给TOMCAT_HOME/lib上传类包

                    采用redis的tomcat集群需要jedis-2.6.2.jar,commons-pool2-2.3.jar类包支持。将以下两个类包上传到tomcat安装目录下的lib目录中

                  1、jedis下载地址

                         http://grepcode.com/project/repo1.maven.org/maven2/redis.clients/jedis/

                  2、commons-pool下载地址

                         http://commons.apache.org/proper/commons-pool/download_pool.cgi

                   3、tomcat-juli-adapters.jar,tomcat-juli.jar

                         根据tomcat版本下载相应的扩展插件类包

                         http://tomcat.apache.org/download-70.cgi

    •  配置tomcat

                   在tomcat_HOME/conf/context.xml中添加以下配置信息

        <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
                 host="redis的ip地址"
                 port="redis的port"
                 database="0"
                 maxInactiveInterval="60"
         />
    • 验证使用redis共享session集群是否成功

                 1、tomcat集群共享session

                      可实现tomcat集群session共享,可进行水平扩展tomcat。终止一台tomcat工作,web应用仍然可以继续访问

                  2、主域名与二级域名实现共享session

                         实现主域名和二级域名共享session,实现单点登录,实现前面的功能还需要规定sessionCookieName必须统一为主域名。
                         实现单点登录的不同应用中与session的相关javabean,必须能够进行序列化和反序列化。

    • sticky_sessionsticky_session_force设置对session的影响

                 通过redis实现session共享方式实现集群,sessionid是固定的,不会受到sticky_sessionsticky_session_force设置值得印象。jk负载到不同的tomcat都不会导致sessionid变化。

                 只有通过组播通讯实现的tomcat集群,当设置sticky_sessionsticky_session_force设置后会产生sessionid的变化。


  • 相关阅读:
    win10安装nodejs,修改全局依赖位置和环境变量配置
    JavaScript判断两个对象内容是否相等
    JS判断是否是数组
    Js判断值是否是NaN
    typeof方法重写(区分数组对象)
    JS实现图片懒加载
    输入url到展示页面过程发生了什么?
    html如何在服务端跑起来
    nuxt怎么打包
    如果scss引用了字体图标文件该怎么打包
  • 原文地址:https://www.cnblogs.com/wala-wo/p/5119213.html
Copyright © 2020-2023  润新知