• 基于memcache处理tomcat的session


    如果单台tomcat就不存在session的问题,如果是多台就需要考虑session共享的问题,或者nginx配置ip_hash可以解决session的问题,但是ip_hash的弊端是客户只能访问一台机器,那台机挂了就报错了不实用。因此这里我们采用memcache+tomcat+nginx来实现。

    案例:

    安装memache

    yum -y install memcached

    systemctl start memcached

    安装nginx和tomcat

    nginx配置成负载均衡

    1. [root@svr5 ~]# vim /usr/local/nginx/conf/nginx.conf
    2. .. ..
    3. upstream tomcatgrp {
    4. server 192.168.2.100:8080;
    5. server 192.168.2.200:8080;
    6. }
    7. server {
    8. listen 80;
    9. server_name localhost;
    10. location {
    11.              proxy_pass http://tomcatgrp;
    12. root html;
    13. index index.html index.htm;
    14. }
    15. }

    /usr/local/nginx/sbin/nginx -s reload

    修改tomcat的配置

    1. [root@svr100 ~]# ~]# vim /usr/local/tomcat/conf/context.xml
    2. <Context>
    3. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    4.     memcachedNodes="mem1:192.168.2.5:11211"
    5.     requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$"
    6.     transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>  

      ####固定格式:transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"/>  

    7. </Context>

    下载需要的jar包拷贝到/usr/local/tomcat/lib下

    下载地址:https://www.mvnjar.com 

    1. asm-5.1.jar minlog-1.3.0.jar
    2. kryo-3.0.3.jar msm-kryo-serializer-1.9.2.jar
    3. kryo-serializers-0.34.jar reflectasm-1.11.1.jar
    4. memcached-session-manager-1.9.2.jar spymemcached-2.11.1.jar
    5. memcached-session-manager-tc8-1.9.2.jar  #要是tomcat7就用 tc7     

      分别在两台机器上添加测试页
      webapp/ROOT/session.jsp
      <%@ page language="java" %>
      <html>
      <head><title>TomcatA</title></head>
      <body>
      <h1><font color="red">TomcatA.test</font></h1>
      <table align="centre" border="1">
      <tr>
      <td>Session ID</td>
      <% session.setAttribute("test","test"); %>
      <td><%= session.getId() %></td>
      </tr>
      <tr>
      <td>Created on</td>
      <td><%= session.getCreationTime() %></td>
      </tr>
      </table>
      </body>
      </html>

    6. 测试http://ip/session.jsp
    7.              


      测试可以先将浏览器缓存清理后进行,也可以反向验证(停掉memcache对比测试)

                                                  
  • 相关阅读:
    【Git&GitHub idea中使用Git 03】
    【Git&GitHub 本地库和远程库交互 02】
    【Git&GitHub 本地库操作 01】
    C Primer Plus学习笔记【11章节】
    Python包,模块理解,以及通过元类自动化注册属性。
    pandas.DataFrame.from_dict的使用介绍
    C Primer Plus学习笔记 第10章 编程练习
    CMOS与BIOS的区别(转帖)
    Python 元类详解 __new__、__init__、__call__[补充说明]
    Python 元类详解 __new__、__init__、__call__[收官之作]
  • 原文地址:https://www.cnblogs.com/rutor/p/11325522.html
Copyright © 2020-2023  润新知