tomcat session共享的尝试 (CAS, memcached, HA)

cas实现共享session cas是开源的登录认证方案,可以实现多个web应用的单点登录。 随着用户量的增加,web应用需要部署多个实例,要实现不同应用、多实例的共享session,需要先了解cas的logout机制。简单的说,web应用在接入cas的时候需要继承cas-client-core,这个模块完成的事情如下: 拦截到web应用的请求,验证登录状态,若未登录则跳转到登录页登录成功,web应用的tomcat 阅读详情

     不久之前, 为项目搭建了一个tomcat集群的环境, 具体如下: nginx+tomcat+memcached+memcached client forjava 主要是通过tomcat的filter将session共享到memcahced server中. 这个方案对于自己做的web application来说, 运行良好. 但其中的CAS服务器是单点的, 于是近两个星期打算将CAS也集群化. CAS的官网上有集群方案, 就是通过tomcat自身的session复制来进行. 一开始觉得这样配置并不完美, 另外, 我们自己的应用程序也不是通过这种方式来共享session的. 所以希望找到一个兼顾两方面需求的方案.

     在网上搜索了一下, 可以切入的点在于继承tomcat的catalina.jar中的standardmanager和standardsession, 改变其行为,当调用session的时候让数据存入到memcached server中去. 现成的开源项目有memcached-session-manager, 但它对memcached的使用,容错等方式不如memcached client forjava完善.

     于是自己动手,参照网上找到的memsession的例子(iteye上codeutil在2007年的例子, 汗颜, 别人07年就研究过了) 结合memcached client forjava进行改造. 结果令人沮丧, CAS是个特例, 它使用了spring的webflow. webflow非常依赖session, 而放到session中的东西不完全是值, 还有filter, container之类的对象. memcached client并不能把这些对象都序列化/反序列化. 在网上搜了一下这个问题,发现http://fallenlord.blogbus.com/logs/43591716.html这篇文章中提到了这个问题, "理论上CAS将票据存储分离到了数据库中应该已经是无状态的了,但很遗憾,CAS 3.x中使用了Spring Web Flow框架,这个框架要求使用一个flowExecutionKey来确定流程位置,它正是存储在Session中。" 这位作者应该是试过各种可能性得出的结论, 很重要的结论.

     另外试了一下memcached-session-manager, 也遇到类似的问题. 由此得出结论, 听jasig官网的, 还是用tomcat session复制的方法.

     整个过程,花了两个半星期,回想一下觉得动手过于草率. 没弄清CAS里到底什么需要写到session里, 只是隐约觉得memcached是灵丹妙药, 什么都能存. 并未想到瓶颈原来在客户端的序列化/反序列化. 草率之二, 因为牵涉到多个模块, 没有及时明确应该在稳定的模块基础上来做尝试. 也没有确认模块的稳定性, 导致过程中花了很多精力处理不相干的问题.

     结论, 要冷静, 头脑不要发热, 新的东西不一定最好, 别人推荐的是经验之谈, 应当考虑.

     后面还会再做些尝试, 因为tomcat session共享一样牵涉到序列化/反序列化的问题, 它能够走得通, 不只是如何处理的. 值得尝试.

cas认证和高可用部署下(tomcat的session共享)的登出方案 cas认证下,高可用部署一般是双机分布式环境,如果登录在一台机器,登出在另一台机器,即使做了session共享也无法正常登出。原因在于,cas的客户端会保存一个token和session的映射存储在登录的机器上,但是登出请求发到另一台机器,而这个映射并没有存储在这个机器上,所以取不到sessionId.解决问题的思路有2种方案,一种session使用共享式缓存,并且把映射关系也保存在共享式缓存种,比如使用redis做session管理。另外一种当使用tomcat共享session,则采用分发请求的方式。 阅读详情

相关推荐

SSO之Cas集群服务(Tomcat得session共享)-yellowcong

sso集群服务,需要解决的问题点: session 共享 ticket共享

706

tomcat的session共享

  可通过下面方法限制一个用户访问一个服务器之后就只在该服务器上操作。   请求负载过程中会话信息不能丢失。那么在多个tomcat中session需要共享。 配置tomcat的session共享可以有三种解决方案: 第一种是以负载均衡服务器本身提供的session共享策略,每种服务器的配置是不一样的,并且nginx本身是没有的。这里不做探究。 第二种是利用web容器本身的session共享策略来配置共享。   针对于weblogic这种方式还是靠谱的。但是针对于tomcat这种方式存在很大的缺

weixin_39833509的博客 3468

linux运维之HA+session共享

linux运维之HA+session共享

N个tomcat之间实现Session共享

关于tomcat之间session共享的配置和解决方案。

小灯光环 3万+

OFDM基本原理

OFDM基础介绍,包括OFDM的核心思想,数学推导了OFDM信号的调制解调过程。

伊丽莎白的学习之路 8904

LFM调制信号分类与检测识别

支持识别LFM信号、间歇采样干扰(ISRJ)、灵巧噪声干扰(SNJ)、扫频干扰(SJ)、瞄准干扰(AJ)、阻塞干扰(BJ)、密集假目标干扰(DFJ)、密集假目标加灵巧噪声干扰(DFWSNJ)、距离欺骗干扰(DDJ)、距离欺骗加灵巧噪声干扰(DDWSNJ)。Faster-RCNN支持检测识别LFM信号、间歇采样干扰(ISRJ)、灵巧噪声干扰(SNJ)、扫频干扰(SJ)、瞄准干扰(AJ)、密集假目标干扰(DFJ)、密集假目标加灵巧噪声干扰(DFWSNJ)、距离欺骗加灵巧噪声干扰(DDWSNJ)等8种信号。

菜yuan~的博客 1026

Tomcat的Session共享

1、为什么会提出这个问题? 使用Nginx+Tomcat进行负载均衡时,希望使用轮询方式进行负载。但是如果使用轮询方式的话,可能会访问不同的Tomcat,此时如果不进行Session共享,则相当于是一个新的Session。就比如现有系统都是需要认证登录的系统,如果没有Session共享,则会导致用户退出登录。 2、方案1:使用Tomcat内置的Session复制方案 具体配置如下: &l...

英阿的博客 1026

Android 面试题 Handler篇

1.Handler的实现原理。

ViewHandKownHealth的博客 952

goalng开发_开发篇

Go 面试,基础知识

qq_46640341的博客 1159

ZYNQ出现问题及解决办法汇总(一直更新)

问题目录使用软件及开发板版本一,vitis在build project时卡住。二,Could not find FPGA device on the board for connection 'Local'三,FPGA configuration failed:DONE PIN is not high四,Could not find ARM device on the board for connection 'Local' 使用软件及开发板版本 开发板:MZ7XA-7020 软件:vitis2020.2(

qq_45057368的博客 1万+

【PyTorch项目实战】图像分类与识别:手写数字识别(MNIST)、普适物体识别(CIFAR-10)

主要介绍了两个经典的实战项目:(1)基于 MNIST 数据集的手写数字识别(2)基于 CIFAR-10 数据集进行图像分类

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 4400

解决集群模式下session共享问题

这篇文章讲解了集群模式下Session共享问题的解决方案,如果有疑问可在评论区留言讨论。

qq_41473691的博客 1109

STM32Cube高效开发教程<高级篇><FreeRTOS>(十八)-----软件定时器

一、 软件定时器概述声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(高级篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。在FreeRTOS中,自动创建的任务有空闲任务和定时器服务任务。FreeRTOS可以通过定时器服务任务提供软件定时器功能。在某些对定时精度要求不太高,无须使用硬件定时器的情况下,我们可以使用FreeRTOS的软件定时器。

我的博客 156

单点登陆与共享session

单点登陆使用场景:当有多个系统,一个账号访问多个系统。只需要一次登陆。一个客户端访问多个服务器。 机制:(1)在cookie存储相应的账号和密码(2)通过redis访问 (3)通过访问固定的单点登陆系统的接口 CAS实现单点登录SSO执行原理探究(终于明白了): http://blog.youkuaiyun.com/javaloveiphone/article/details/52439613 上面这...

行简 1242

锐捷 MPLS VPN 配置

ISP内部配置 , PE设备和CE设备之间的接口不开启 ( 只在物理接口上配置 , loopback 口不配置 )最后一步关闭 ipv4 单播 , 如果你发现路由奇奇怪怪的 , 可以尝试一下。both --> 同时配置 import export 值。绑定后接口会重置 , 且接口的路由会转到VRF路由表中。这里基本上绑定了 vrf 实例的接口都需要宣告进去。vpnv 4 通道是用来传递 mpls 路由的。先建立邻居管理,建立VPNV4通道。这里要做双向引入 , 才会有路由。export 导出值。

dekangzou的博客 1710

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

单点登录 SSO Session

  单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来满足需求。我将以我所遇到的应用环境以及在其中所经历的各个阶段与大家分享,若有不足,希望各位不吝赐教。 一、共享Session 共享Session可谓是实现单点登录最直接、最简单的方式。将用户认证信息保存于Se...

白强 607

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

tomcat-自带的简单session共享,小集群适用

运维菜 2017-11-21 21:34:43 前言 在多个tomcat集群中,session共享就是必须,不然前端nginx转发过来不知道之前请求在哪台,就找不到session,导致请求失败。 下面是tomcat自带的session共享的例子,对于小集群够用了,大集群还是建议使用redis或者memcache进行共享。 例子 安装apache-tomcat比较简

u011277123的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CAS Client集群环境的Session问题及解决方案

【原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源】 之前写过一篇文章,介绍单点登录的基本原理。这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法。并结合实际工作中碰到的问题,探讨在集群环境中应用单点登录可能会面临的问题。这篇文章在上一篇的基础上,增加了第四部分,最终的解决方案。 1单点登录的过程 为了描述方便,假设有如下一个单点登录系统。一套CASServer,两套C...

weixin_30498921的博客 689

CAS 集群部署session共享配置

背景 前段时间,项目计划搞独立的登录鉴权中心,由于单独开发一套稳定的登录、鉴权代码,工作量大,最终的方案是对开源鉴权中心CAS(Central Authentication Service)作适配修改。 实际应用中,web服务出于负载、容灾的考虑,采用集群部署web服务(一般是tomcat集群),于是有了CAS server端集群部署的需求。CAS集群部署,需要解决两个问题: CAS票据...

weixin_34293911的博客 801

Haproxy 8种算法+Session共享

Haproxy有8种负载均衡算法(balance),分别如下:1.balance roundrobin # 轮询,软负载均衡基本都具备这种算法2.balance static-rr # 根据权重,建议使用3.balance leastconn # 最少连接者先处理,建议使用4.balance source # 根据请求源IP,建议使用5.balance uri # 根据请求的URI6.balance

7942

实战Memcached缓存系统(4)Memcached的CAS协议

尊重知识,转载请注明本文来自:编程艺术家Poechant的优快云博客 http://blog.youkuaiyun.com/poechant 1. 什么是CAS协议 很多中文的资料都不会告诉大家CAS的全称是什么,不过一定不要把CAS当作中国科学院(China Academy of Sciences)的缩写。Google.com一下,CAS是什么?CAS是Check And Set的缩写。 2...

103

Tomcat+Memcached/Redis集群 构建高可用解决方案

之前在比赛的时候需要用Python实现灰色关联分析,从网上搜了下只有实现两个列之间的,于是我把它改写成了直接想Pandas中的计算工具直接计算person系数那样的形式,可以对整个矩阵进行运算,并给出了可视化效果,效果请见实现灰色关联分析法对于两个系统之间的因素,其随时间或不同对象而变化的关联性大小的量度,称为关联度。在系统发展过程中,若两个因素变化的趋势具有一致性,即同步变化程度较高,即可谓二者...

wujun23的博客 1259

cas 入门之三十:cas 集群tomcat session组播复制

cas 的运行环境是tomcat,cas的集群主要分为两部分,一是登录过程中session的集群,二是登录之后产生的ticket的集群。 对于登录之后产生的ticket的集群,则相对容易,根据我前几篇文章可以找到答案,比如将ticket 以jpa的形式存到外部数据库即可以。 那么对于登录过程中session的集群,对于tomcat则进行session复制。tomcat的session复制目前有

snoopy 4973
上一篇: Juit4 spring testContext 新特性及遇到的问题
下一篇: cloud computing for dummies读书笔记
eddyx
博客等级 码龄22年 14粉丝 46原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值