memcached分布式服务器,解决Nginx的session的一致性问题

  • 你连续访问同一个网页多次和访问1次对服务器来说是没有区别对待的,http协议是无状态的.
  • 在进行Nginx做负载均衡操作时,把同一用户请求分发到不同的tomcat服务器。用户的session数据只存在于单一的某一台服务器上,在同一个大型项目中该用户可能明明已经登陆了,但对于其他的tomcat服务器而言,却是第一次登陆(session中的用户登陆信息仅仅在某一台tomcat服务器上)。在用户访问过程中,负载均衡只要为用户分配不同的服务器,用户就需要重新登陆。
  • tomcat服务器 本身带有复制session的功能。
  • memcached服务器,可以和tomcat整合,共享session给其他的服务器,解决session的一致性问题.
    在这里插入图片描述

memcached的安装和配置

  • 安装memcached内存数据库

yum -y install memcached

  • 其中的memcached-session-manager的jar包版本需要和jdk的版本和nginx的版本一致
  • 拷贝完之后,配置tomcat的conf目录下的context.xml

vim /usr/soft/apache-tomcat-7.0.61/conf/context.xml,在文件中加入下列配置

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.17.9:11211"              // 别名:memcached服务器的ip:端口
    sticky="true"
    lockingMode="auto"
    sessionBackupAsync="false"
   requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
   //连接超时时间
sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" />
  • 配置memcachedNodes属性,配置memcached数据库的ip和端口,默认11211,多台memcached用逗号隔开.
  • 目的是为了让tomcat服务器从memcached缓存里面拿session或者是放session
  • 之后可直接跳过本步骤去启动memcached,但如果想要测试下效果,可以执行如下步骤

修改index.jsp
vim /usr/soft/apache-tomcat-7.0.61/webapps/ROOT/index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%>
<html lang="en">
SessionID:<%=session.getId()%>
</br>
SessionIP:<%=request.getServerName()%>
</br>
<h1>tomcat01</h1>
  • 启动memcached
  • 启动nginx服务器,tomcat服务器
  • 把所有防火墙都关闭
  • 启动mecached:
    memcached -d -m 128m -p 11211 -l 192.168.200.202 -uroot -P /tmp/
  • -m:大小128M
  • -p:端口
  • -l:连接memcached服务器ip地址为192.168.200.202
  • -u:用户是root
  • -P:不需要跟什么
  • /tmp/:临时文件打印到tmp目录下
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值