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

[经验分享] 用memcached实现session共享

[复制链接]

尚未签到

发表于 2018-12-25 07:12:57 | 显示全部楼层 |阅读模式
用memcached实现session共享

  

  一、简介
  

  1)Memcached简介:
  是一种高性能的分布式缓存服务器;
  一般的使用目的是,通过“缓存数据” 查询结果,减少数据访问次数,以提高动态web应用的速度;
  开源且垮平台的。
  memcached支持许多平台:
  Linux
  FreeBSD
  Solaris
  Mac OS X
  Windows
  特点:通过增长因子解决存储数据的空间浪费问题
  只提供存储数据的空间,数据存与取由客户端自己完成
  2)什么是session
  客户端从打开浏览器到关闭浏览器结束对网站的访问的过程就称为一个session
  但http是一个无状态的连接协议
  session信息存储在服务器端,保存用户信息,用户名,密码等
  cookies 信息是服务器下发给客户端的,并保存咋客户端的一个文件里,保存的内容主要包括:、SessionID、账号名,过期时间,路径和域
  

  二、案列
  

  我们构建2台memcached 服务,一台做主,一台做从,防止主down掉时,从服务器可以继续工作;(192.168.1.40和192.168.1.50)
  配置2台web服务器,用tomcat做服务,使用java语言测试页面(192.168.1.20和192.168.1.30)
  配置一台nginx代理服务器(192.168.1.1)
  

  1、memcached服务器的搭建
  1)  memcached服务需要用到事件库,要安装事件库libevent
  #tar -zxvf libevent-2.0.15-stable.tar.gz
  #cd libevent-2.0.15-stable
  #./configure
  #make && make install
  这里用的是源码包,安装源码包的软件,源码包安装四部走,解压--配置--编译--安装!
  

  安装完成后默认安装目录在/usr/local下,我们要把自己安装的事件库让系统识别,用下面命令
  #echo '/usr/local/lib'>/etc/ld.so.conf.d/libevent.conf
  #ldconf//马上生效,无需重启
  #ldconf -v |grep --color libevent
  //检查一下配置是否成功
  2)安装memcached
  #tar -zxvf memcached-1.4.5.tar.gz
  # cd memcached-1.4.5
  #./configure
  # make
  #make install//同样的源码包安装四步
  安装完memcached之后,会在/usr/local下的bin目录下生成memcached的启动脚本
  #cd  /usr/local/bin/
  memcached的启动参数:
  -h 查看帮助信息
  -p   指定memcached监听的端口号  (默认11211)
  -l    memcached服务器的ip地址     (默认所有地址)
  -u   memcached程序运行时使用的用户身份 必须 是root用户
  -m  指定使用本机的多少物理内存 存数据  (默认64M)
  -c    memcached服务的最大链接数
  -vvv 显示详细信息
  -n   chunk size 的最小空间是多少 单位 字节
  -f    chunk size大小增长的倍数  (默认 1.25倍)
  -d   在后台启动
  

  启动memcached服务:
  #usr/local/bin/memcached    -u  root  -m 200M  -c 200  -n  10  -f  2  -vvv  -d
  

  #netstat -utuanlp | grep :11211
  //查看一下启动状态,默认端口11211
  #pkill  -9   memcached
  //关闭服务用杀进程的方式
  3)测试memcached
  

  [root@localhost bin]# telnet localhost  11211
  Trying 127.0.0.1...
  Connected to localhost.localdomain (127.0.0.1).
  Escape character is '^]'.//用telnet来测试,11211口
  set age 0  180  2
  10
  STORED//出现这样的字样表示成功
  get age
  VALUE age 0 2
  10
  END
  quit
  Connection closed by foreign host.
  

  参考第一台memcached服务器的搭建过程,搭建另外一台memcached服务器
  

  2、部署tomcat网站服务器
  1)安装jdk  (linux    jdk    tomcat)
  jdk= Java Development Kits,Java开发工具
  

  用jdk-6u27-linux-i586包,实现linux与tomcat的“沟通”
  ---对应的包jdk-6u27-linux-i586.bin (tomcat运行环境包)
  

  #chmod +x  jdk-6u27-linux-i586.bin
  #./jdk-6u27-linux-i586.bin     //直接运行即可
  #mv jdk1.6.0_27  /usr/local/jdk
  #vim /etc/bashrc//定义环境变量
  export    JRE_HOME=/usr/local/jdk
  export    JAVA_BIN=/usr/local/jdk/bin
  export    PATH=$JRE_HOME/bin:$PATH
  export    CLASSPATH=.:$JRE_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
  export JRE_HOME   JAVA_BIN   PATH   CLASSPATH
  [root@www ~]# source   /etc/bashrc
  //初始化环境变量
  验证jdk:
  #java -version
  2)安装tomcat
  #tar -zxvf apache-tomcat-6.0.32.tar.gz  -C /usr/local/
  #mv apache-tomcat-6.0.32/ tomcat
  目录:
  bin   服务启动脚本
  lib      库文件
  logs    日志文件
  Work模块配置文件目录
  conf  tomcat配置文件目录
  webapps/ROOT       网页目录
  

  启动tomcat
  #cd /usr/local/tomcat/bin/
  [root@www bin]# ./startup.sh     启动服务 脚本
  #netstat -unalp | grep :8080  (tomcat 默认监听8080端口)
  

  [root@www bin]# ./shutdown.sh  停止服务脚本
  客户端访问
  http://server_ip:8080
  

  3)配置tomcat支持memcached
  让客户端把session_id 保存到memcached服务上。
  在tomcat上部署msm
  安装 连接memcached服务器的连接工具  (msm组件)
  安装完之后cd到session目录下
  #cd  session
  #cp  *.jar   /usr/local/tomcat/lib/
            //把所有以jar结尾的拷贝到tomcat的lib目录下
  编辑tomcat的配置文件,设置主从memcached服务器
  #cd /usr/local/tomcat/conf/
  #vim    context.xml
  

  
  

  
  

  
  
  以同样的方式,部署另外一台tomcat服务器;并且分别创建一个java测试页,分别调用各自的sessionID的值,以作后面的检测用,使效果更明显
  

  test.jsp
  
  
  
  
  192.168.1.101
  
  
  
  

  可以在另外一台tomcat服务器上把测试页的背景颜色bgcolor="green"改一下,测试效果明显
  

  

  

  

  3)配置nginx反向代理:
  把用户访问网站的请求以轮询的方式分发给后端的2台tomcat服务器。
  

  #vim /usr/local/ngix/conf/nginx.conf
  

  upstream sergrp{//定义源服务器组,名字可自由发挥
  server 192.168.1.30:8080;
  server 192.168.1.20:8080;
  

  

  }
  http{
  server {
  server_name www.tarena.com;
  location / {
  ... ...
  proxy_pass http://sergrp;//调用前面定义的服务组
  }
     }
  }
  4)测试
  在客户端浏览器上输入代理服务器的ip地址,之后显示后端的tomcat服务器的页面,接着刷新一下,显示的是另外一个后端tomcat服务器的页面,两张页面的sessionID的值是相同的,代表部署成功!
  

  

  

  

  思路:
  1、nginx 反向代理 ((把用户房费自己请求,分发给后台的2台tomcat服务器)
  

  端口8080
  

  

  

  2、配置tomcat服务器:
  192.168.1.30:8080;
  192.168.1.20:8080;
  

  3、部署2台memcached服务
  

  4、让tomcat把sessionID存放到memcached里
  

  没配置之前,测试会发现session在变 服务器也在变
  

  配置:
  安装连接工具,编写配置文件,连接memcached服务器
  

  context.xm(msm组件)
  

  
  

运维网声明 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-655438-1-1.html 上篇帖子: memcached 安装测试 下篇帖子: InnoDB memcached插件 vs 原生memcached对比性能测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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