通过memcached实现session一致

目录

友情提示:

1.准备工作:

​2.session共享

3.session一致性解决方案

3.1、session复制

3.2、共享session

3.3.安装memcached

3.3.1node2和node3上安装jdk和tomcat

3.3.2nginx1上安装memcached

3.4 配置session共享

测试:


友情提示:

        该文章为本人实践过程中所写,其中穿插着一些其他的知识。所以本文可能对 session一致 讲的不是很清楚,仅供参考,大佬勿喷。

1.准备工作:

我们需要三台虚拟机,分别为:(根据自己情况所定)

主机名IP
nginx1192.168.96.65
node2192.168.96.62
node3192.168.96.63

nginx1需要装有nginx(可查看nginx安装文章)

​2.session共享

         http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你。

        session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie,这个cookie的默认生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。

       实现机制是当用户发起一个请求的时候,服务器会检查该请求中是否包含session id如果未包含,则系统会创造一个名为JSESSIONID的输出 cookie返回给浏览器(只放入内存,并不存在硬盘中),并将其以HashTable的形式写到服务器的内存里面;当已经包含sessionid是,服务端会检查找到与该session相匹配的信息,如果存在则直接使用该sessionid,若不存在则重新生成新的 session。这里需要注意的是session始终是有服务端创建的,并非浏览器自己生成的。 但是浏览器的cookie被禁止后session就需要用get方法的URL重写的机制或使用POST方法提交隐藏表单的形式来实现。

3.session一致性解决方案

3.1、session复制

        tomcat 本身带有复制session的功能。(基本不用)

3.2、共享session

        需要专门管理session的软件,

        memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session。

3.3.安装memcached

3.3.1node2和node3上安装jdk和tomcat

这里只演示node2上的安装过程,node3同样的操作。

通过Xftp软件上传至虚拟机(Xshell,Xftp自行下载)

jdk安装过程:

[root@nginx1 apps]# rpm -ivh jdk-7u80-linux-x64.rpm

 配置环境变量

[root@nginx1 apps]# find / -name '*java*'
#可以看出/usr/java/jdk1.7.0_80/

[root@node1 jdk1.7.0_80]# vim /etc/profile
#加入以下两行代码:
export JAVA_HOME=/usr/java/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin             

文件生效:

[root@nginx1 apps]# source /etc/profile
[root@nginx1 apps]# jps
13894 Jps  #说明jdk安装配置成功

 tomcat安装

解压apache-tomcat-7.0.69.tar.gz

修改apache-tomcat-7.0.69/webapps/ROOT/index.jsp, dG全删后,添加:

from 192.168.96.62 session=<%=session.getId()%>

另外一台(node3)同样的安装配置操作。

然后分别访问node2和node3都可以正常访问。

修改nginx1的nginx.conf文件


    gzip  on;
    upstream rses{  #定义了提供服务的服务器IP组,实现了负载均衡
        server 192.168.96.62:8080; #通过8080端口访问node2
        server 192.168.96.63:8080;
    }
    server {
        listen       80;
        server_name  www.nuclwt.com;  #通过域名实现的虚拟主机
        location / {
            root   html;
            index index.html index.html;

        }

        location /toms {     #locattion配置
            proxy_pass http://rses/;  #反向代理至rses
        }


    }

        涉及到的配置还请参考以下文章:

                nginx基于域名实现虚拟主机(重点)

                nginx.conf文件参数详解(二)——location块(重点)

3.3.2nginx1上安装memcached

安装libevent 

yum install libevent -y

安装memcached  

yum install memcached  -y

启动memcached

memcached -d -m 128m -p 11211 -l 192.168.96.65 -u root -P /tmp/

启动时  -l:IP(使用自己的IP)

-d:后台启动服务

-m:缓存大小

-p:端口

-l:IP

-P:服务器启动后的系统进程ID,存储的文件

-u:服务器启动是以哪个用户名作为管理用户

3.4​​​​​​​ 配置session共享

拷贝jar到tomcat的lib下,jar包如下(自行下载)

配置tomcat,每个tomcat里面的context.xml中加入

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 
	memcachedNodes="n1:192.168.20.95:11211" #IP为nginx1的IP
    sticky="false" 
    lockingMode="auto"
    sessionBackupAsync="false"
	requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 
/>

tomcat添加jar包和配置信息之后需要重启

测试:

重启后,可以通过域名 www.nuclwt.com/toms 访问,可以发现我们访问的服务器不一样(IP不同),它的session值是相同的。都为:EA3BA22472D2DE4E8FE73A3729A2ED4B-n1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ErYao7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值