设为首页 收藏本站
查看: 699|回复: 0

[经验分享] Tomcat+memcached+Nginx实现session共享

[复制链接]

尚未签到

发表于 2018-12-4 08:16:02 | 显示全部楼层 |阅读模式
  Tomcat+memcached+Nginx实现session共享
  1.文档简要说明
  2.文档相关内容地址:
  2.1相关软件包及下载地址
  官方网址:
  MSM: http://code.google.com/p/memcached-session-manager/
  Memcached:http://memcached.org/
  最新稳定包下载地址:
  http://code.google.com/p/memcached-session-manager/downloads/list
  2.2相关配置文件模板及地址
  相关依赖的jar包可从此配置文件模板中的链接下载
  http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration
  2.3相关文档地址
  Memcached安装:\hdmusic\trunk\docs\系统部署\Memcached\Memcached安装.doc
  Tomcat安装:\hdmusic\trunk\docs\系统部署\Tomcat\Tomcat+Jdk安装.doc
  Nginx安装:\hdmusic\trunk\docs\系统部署\Nginx\nignx安装.doc
  Nginx+tomcat整合:\hdmusic\trunk\docs\系统部署\Nginx\Nginx+Tomcat实现负载均衡动静分离.doc
  3.文档内容:
  3.1原理介绍:
  MSM(memcached-session-manager)支持tomcat6和tomcat7,利用Value(Tomcat阀)对Request进行跟踪。Request请求到来时,从memcached加载session,Request请求结束时,将tomcat session更新至memcached,以达到session共享之目的,支持sticky和non-sticky模式。
  Sticky 模式:tomcat session 为主session,memcached 为备session。Request请求到来时,从memcached加载备session 到tomcat (仅当tomcat jvmroute发生变化时,否则直接取tomcat session);Request请求结束时,将tomcat session更新至memcached,以达到主备同步之目的。
  Non-Sticky模式:tomcat session为中转session,memcached1为主sessionmemcached 2 为备session。Request请求到来时,从memcached 2加载备session 到tomcat,(当容器中还是没有session 则从memcached1加载主session 到tomcat,这种情况是只有一个memcached节点,或者有memcached1出错时),Request请求结束时,将tomcat session更新至主memcached1和备memcached2,并且清除tomcat session 。以达到主备同步之目的。
  3.2下载msm的jar包,并将其放置tomcat的lib目录下
  tc6和tc7分别对应tomcat6和tomcat7,若需添加一个jar便可。
  必须jar:memcached-session-manager-${version}.jar
  memcached-session-manager-tc6-${version}.jar
  memcached-session-manager-tc7-${version}.jar
  spymemcached-2.7.3.jar
  根据序列化选择jar:kryo效率在高可用时效率最高,但并发量不大时比较一般。
  kryo-serializer: msm-kryo-serializer, kryo-serializers, kryo, minlog, reflectasm, asm-3.2
  javolution-serializer: msm-javolution-serializer, javolution-5.4.3.1
  xstream-serializer: msm-xstream-serializer, xstream, xmlpull, xpp3_min
  flexjson-serializer: msm-flexjson-serializer, flexjson
  3.3流程图
  1.sticky
  http://blog.运维网.com/e/u/themes/default/images/spacer.gif
  2.non-sticky
  http://blog.运维网.com/e/u/themes/default/images/spacer.gif
  3.4修改tomcat/conf/context.xml文件,在添加如下内容:
  配置内容及官方截图如下:
  sticky
  #nano /usr/local/tomcatA/conf/context.xml
在< Context>< /Context>中加入以下内容
    memcachedNodes="n1:192.168.1.123:11211,n2:192.168.1.129:11211"
  failoverNodes="n1"
  requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>

  non-sticky
  
  官方截图:

  3.5配置解释:
t1(m1): 192.168.1.145 t2(m2):192.168.1.146t1配置n1:192.168.1.145:11211 n2:192.168.1.146:11211 t2配置n1:192.168.1.146:11211 n2:192.168.1.145:11211 . \ / . . X . . / \ .  
  sticky:采用Sticky配置时,tomcat默认维持向n2的session访问(建议不要把n2放在本机上,以防t1的机子宕机时tomcat等全部被关闭),当n2宕掉时,会转而访问n1的session。
  non-sticky:采用Non-sticky时,tomcat会分发请求,并不维持对同一个tomcat的访问,而是通过轮询的方式随机访问。即tomcat随机对n1、n2的访问,建议搭载成三个memcached,三台机的session互为备份,当其中一个memcached失效时一台转为主要memcached,另外一台依旧可以备份。
  3.6测试(此处的jsp仅列出body内容,测试服务器145、146)
  n1:192.168.1.146:11211,n2:192.168.1.145:11211,n3:192.168.1.146:11212
  输入内容:save.jsp
  
  

  What's your name?   
  
  
  获得sessionid:index.jsp
  
  
  This is my JSP page.
  
  Continue
  
  得到sessionid及session值: next.jsp
  
  
  Hello,
  
  查看memcached是否启动。
  #ps –A|grep memcached

  Memcached未宕机时:



  可知145访问的是n2的session,宕掉145的memcached,再次访问next.jsp,访问结果如下:


  如上图所示,宕掉n2后,转而访问n3的session,得到session值依旧是123,再次宕掉n3,访问截图如下:

  宕掉n1:

  至此,所以session均被清空,重启三台memcached后,session值为null。
  3.7Memcached对web项目的要求
  要求web项目需要序列化,否则,类似于后台登陆系统会报未必序列化错误。
  3.8Nginx+memcached+tomcat实现session共享
  剩余步骤中,只需实现nginx+tomcat的负载均衡和动静分离便可,详细请打开,此处不做详细实现。
  \hdmusic\trunk\docs\系统部署\Nginx\Nginx+Tomcat实现负载均衡动静分离.doc
  3.9待续
  配置内容及相关命令在表格



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-643027-1-1.html 上篇帖子: Tomcat发布网页的方法记录 下篇帖子: tomcat服务器介绍之二 、session服务器实现方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表