• 5.Nginx的session一致性(共享)问题配置方案1


    1:Session共享

      为什么要实现共享,如果你的网站是存放在一个机器上,那么会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话

    id在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机器,而它的session数据可能存在其中一台机器,这个时候就会出现取不到session数据的情

    况,于是session的共享就成了一个问题。

    2:Session一致性(共享)解决方案

      1、session复制:tomcat 本身带有复制session的功能
      2、共享session
        – 需要专门管理session的软件memcached
        – memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session

    2.1:Linux安装memcached

      1.Linux系统安装memcached,首先要先安装libevent库:yum install libevent libevent-deve

      2.安装 Memcached:.yum -y install memcached

      3.Memcached 启动运行:service memcached start

      4.Memcached 测试连接:使用telnet 命令并指定主机ip和端口来连接 Memcached 服务。语法:telnet HOST PORT,HOSTPORT 为运行

    Memcached 服务的 IP 和 端口

      实例演示如何连接到 Memcached 服务并执行简单的 set 和 get 命令

             本实例的 Memcached 服务运行的主机为 127.0.0.1(本机) 、端口为 11211

    telnet 127.0.0.1 11211
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    set foo 0 0 3                                             保存命令   3为长度 0为存活时间
    bar                                                             数据
    STORED                                                    结果
    get foo                                                        取得命令
    VALUE foo 0 3                                           数据
    bar                                                              数据
    END                                                             结束行
    quit                                                            退出

       

    2.2:Tomcat配置名称和session一致性配置(tomcat整合,让Tomcat从该缓从数据库中取session)

      5.拷贝https://pan.baidu.com/s/1j8A5QbqZM7uZoCR0IHLRBQ中lib下的jar包到tomcat的lib下(分别是200和201web服务器连接Memcached的jar包)

      6.修改Engine标签:tomcatserver.xml配置jvmRoute属性(分别是200和201服务器)方便查看sessionid里面带有的Tomcat名字

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat200">
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat201">

      7.Tomcat首页面index.jsp配置(分别是200和201服务器)

    <%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>     -----根据情况加,我加了报错了,去掉就好了
    SessionID:<%=session.getId()%>
    <br/>
    SessionIP:<%=request.getServerName()%> 
    <br/>
    <h1>tomcatxxx page</h1>

      进行访问:http://192.168.232.201:8080/                     

      

      进行访问:http://192.168.232.200:8080/

      

      进行访问:http://shizhan2:8888/,通过域名访问192.168.232.201,使用反向代理继而访问201和200的Tomcat服务器,不断刷新页面,发现

    sessionid是不断变化的,所以下面配置Memchched缓存数据库(启动Memchched服务)

      8.修改Tomcat的context.xml文件,配置Manager

    <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
       #配置memcachedNodes属性:配置memcached数据库的IP和端口,默认11211,多个用空格隔开,目的让Tomcat从memcached缓从里面取放session memcachedNodes="n1:192.168.232.201:11211"
    #我们的memcached安装在192.168.232.201服务器上 sticky="false" lockingMode="auto" sessionBackupAsync="false" requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)$" sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />

       配置好后使用域名进行访问:http://shizhan2:8888/

      

    5.利用redis实现session共享

      安装redis缓存数据库:yum -y install redis

      修改配置文件vi /etc/redis.conf,将bind的127.0.0.1修改为本机地址(192.168.232.201:安装了redis),否则只能通过localhost访问了

      导入redislib中三个jar包到tomcat中(201和200),包连接:https://pan.baidu.com/s/1L1ytXRW4ig4YCukg3j-oZQ

      

      在tomcat/conf下的context.xml中添加配置(201和200):

     <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
     <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
               host="192.168.232.201"
               port="6379"
               database="0"
               maxInactiveInterval="60" />

      

      

      

      

      

      

      

      

      

  • 相关阅读:
    意外发现,VC断点可加在构造函数的左括号上
    C++中的INL
    如何用DELPHI编程修改外部EXE文件的版本信
    j2ee面试宝典翻译(1)
    华为总裁任正非:允许小部分力量去颠覆性创新
    QStringList与QString互转
    QTreeView只显示指定驱动器及其目录,隐藏所有兄弟节点
    Protected Functions 是理解OO的难点和关键
    技术人员的创业陷阱:我能,但不管用户在哪里!
    大陆的创业环境和风气的确产生巨大变化,大众创业“蔚然成风”
  • 原文地址:https://www.cnblogs.com/yaboya/p/9101627.html
Copyright © 2020-2023  润新知