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,HOST 和 PORT 为运行
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标签:tomcat的server.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" />
5.Nginx的session一致性(共享)问题配置方案1的更多相关文章
- 6.Nginx的session一致性(共享)问题配置方案2
1.利用memcached配置session一致性的另外一种方案tengine的会话保持功能 1.1:Tengine会话保持:通过cookie来实现的 该模块是一个负载均衡模块,通过cookie实现客 ...
- Nginx的session一致性问题
session一致性memcached缓存数据库解决方案 1.安装memcached内存数据库 yum –y install memcached 可以用telnet localhost 11211 S ...
- nginx 解决session一致性
session 粘滞性每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题. upstream backserver {ip_hash;server ...
- 详解Session分布式共享(.NET CORE版)
一.前言&回顾 在上篇文章Session分布式共享 = Session + Redis + Nginx中,好多同学留言问了我好多问题,其中印象深刻的有:nginx挂了怎么办?采用Redis的S ...
- Nginx+tomcat集群中,session的共享
nginx,tomcat集群后多个session分配到同一个应用 单节点低负荷的情况下,我们通常把一个WEB应用打成WAR包放WEB应用服务器,如TOMCAT下运行就行了(如图1).但随着用户量的增加 ...
- nginx负载均衡中利用redis解决session一致性问题
关于session一致性的现象及原因不是本小作文的重点,可以另行找杜丽娘O(∩_∩)O哈哈~重点是利用redis集中存储共享session的实际操作. 一.业务场景:nginx/tomcat/redi ...
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
- Session分布式共享 = Session + Redis + Nginx
一.Session 1.Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我就简单的介绍一下. Session:在计算机中,尤其是在网络应用中,称为"会话控制 ...
- nginx之 nginx + tomcat + redis 负载均衡且session一致性
说明: 本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!nginx 代理服务器ip: 10.219.24.2 ...
随机推荐
- 【FIORI系列】SAP 一文读懂SAP Fiori是什么
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FIORI系列]SAP 一文读懂SAP Fio ...
- dockerfile文件命令详解
Dockerfile 一般分为四部分:基础镜像信息.维护者信息.镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释: Dockerfile的指令根据作用可以分为两种:构建指令 ...
- 【AMAD】django-countries -- 为Django app的form提供country选项,为model提供CountryField
动机 简介 个人评分 动机 有时候看一些数据库设计,国家数据会存在一个单独的表里面.这种方式读取数据库无疑又要加上一层join,很不划算. 简介 [django-countries]1解决的是: 不用 ...
- Java利用模板生成pdf并导出
1.准备工作 (1)Adobe Acrobat pro软件:用来制作导出模板 (2)itext的jar包 2.开始制作pdf模板 (1)先用word做出模板界面 (2)文件另存为pdf格式文件 (3) ...
- 剑指offer8:青蛙跳台阶
1. 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 2. 思路和方法 青蛙每一次跳跃只有两种选择:一是再跳1级阶梯到 ...
- GTID复制
什么是GTID呢, 简而言之,就是全局事务ID(global transaction identifier ),最初由google实现,官方MySQL在5.6才加入该功能.GTID是事务提交时创建分配 ...
- Boot-crm管理系统开发教程(三)
(ps:前两章我们已经把管理员登录和查看用户的功能实现了,那么今天我们将要实现:添加用户,删除用户,和修改用户功能) 由于Cusomer的POJO类型已经写好了,所以这次我们之前从CustomerCo ...
- 怎样修改输入框 placehoder 提示文本的颜色?
1. 在这个问题上, 不同浏览器的设置方法有所差异, 可以写成下面这种形式. ::-webkit-input-placeholder { /* WebKit browsers */ color: #9 ...
- 7 java 笔记
1 方法是类或者对象行为特征的抽象,方法是类或对象最重要的组成部分 2 java里面方法的参数传递方式只有一种:值传递 值传递:就是将实际参数值的复制品传入方法内,而参数本身不会受到任何影响.(这是j ...
- SSIS 初次接触 + 开发记录
第一次接触SSIS,昨天终于把一套流程走通,记一下流水. 1:安装 使用SSIS需要安装插件(VS 和Sql Server都需要另外安装). 自己使用的vs2017开发,官网有专门的 VS2017 安 ...