基于Memcached的Nginx服务器集群session共享
原料:jdk1.8,tomcat7,nginx1.16,memcached-1.2.6,Mem-Tomcat需要的jar包,基于windows7。所有的点击以下链接可下载
链接:https://pan.baidu.com/s/1jeO3T4ubJiz-G9TtyIOoCQ 提取码:4ckm
nginx安装参考上一篇文章:https://www.cnblogs.com/bigdatadiary/p/10951313.html
1.安装jdk1.8,配置环境变量
2.解压Tomcat7(两份),分别命名为tomcat0,tomcat1,并修改端口保证两个Tomcat能正常运行
3.安装memcached(以下简称mem),其1.4版本以下都是以服务安装,可以在系统服务中查看运行状况,安装步骤如下:
(1):解压mem,得到一个memcached.exe文件
(2):cmd,进入memcached.exe目录下,执行 memcached.exe -d install,安装成功是没有任何提示的。memcached.exe -d start/stop 分别为mem的服务启动和停止命令,memcached.exe -h 命令查看mem更多命令以及说明,mem使用11211端口,默认换成为512M
(3):启动mem。
4.配置Tomcat,将以下代码复制到两个tomcat\conf\context.xml中
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:localhost:11211"
sticky="false"
sessionBackupAsync="false"
sessionBackupTimeout="1000"
lockingMode="auto"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
*以上配置详解
memcachedNodes
必须项
配置 memcached 节点。格式:<id>:<host>:<port>,多个节点之间,用空格或英文逗号分隔
sticky
可选项
是否粘性。默认为 true。粘性会话需要保证每个用户的请求都路由到同一台 Tomcat 服务器中。否则,需要设置成非粘性会话。
lockingMode
可选项
用于非粘性会话。默认为 none。
|
可选值 |
描述 |
|---|---|
|
none |
不锁定 session |
|
all |
每个请求访问 session 的期间,session 一直被锁定,直到请求结束 |
|
auto |
只锁定写请求的 session,只读请求的 session 不会被锁定 |
|
uriPattern:<regexp> |
通过正则表达式的方式来对请求的 URI 进行匹配,匹配上的会被锁定 |
sessionBackupAsync
可选项
设置 session 会话中的数据是否异步同步到 memcached 中,默认为 true。
requestUriIgnorePattern
可选项
设置忽略会话同步的请求的 URI 地址的正则表达式。这应该包含静态资源的请求。
failoverNodes
可选项
memcached 故障转移节点配置。用于粘性会话,非粘性会话不可用。如:
failoverNodes="n1",含义是告诉 msm 将 session 会话中的数据存储到 memcached 的 n2 节点中,如果 n2 节点宕掉等致使其不能正常提供服务,msm 才会将 session 会话中的数据存储到 memcached 的 n1 节点中。
sessionAttributeFilter
可选项
配置同步 session 会话数据的属性名称的正则表达式。如果不设置,则将 session 中全部的属性保存到 memcached 中。
transcoderFactoryClass
可选项
配置序列化和反序列化 session 会话中的数据到 memcached 中的编码转换器的工厂类名。
默认是 de.javakaffee.web.msm.JavaSerializationTranscoderFactory
backupThreadCount
可选项
用于异步存储 session 会话中的数据到 memcached 中的线程数。(当 sessionBackupAsync="true" 时,该配置项有效)
sessionBackupTimeout
可选项
备份 session 会话数据所需时间如果大于该值,将导致 session 会话数据同步失败。默认为 100(单位毫秒)
(5)将 Mem-Tomcat需要的jar包 放进Tomcat的lib目录下,然后新建一个ROOT文件夹,在里面建一个index.jsp文件,index.jsp文件写入以下代码,保存后点击bin/startup.bat运行tomcat,即可看到session共享成功
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Session test</title>
</head>
<body>
Tomcat 0
<p>SessionID:<%=session.getId()%></p>
</body>
</html>
基于Memcached的Nginx服务器集群session共享的更多相关文章
- 基于Redis的Nginx服务器集群session共享
原料:jdk1.8,tomcat7,nginx1.16,Redis3.2.100,Redis-Tomcat需要的jar包,基于windows7. Redis3.2.100与Redis-Tomcat需要 ...
- Nginx+Tomcat集群+session共享
Nginx+Tomcat集群+session共享 1)安装Nginx 2)配置多个Tomcat,在server.xml中修改端口(端口不出现冲突即可) 3)在nginx.conf文件中配置负载均衡池, ...
- 160513、nginx+tomcat集群+session共享(linux)
第一步:linux中多个tomcat安装和jdk安装(略) 第二步:nginx安装,linux中安装nginx和windows上有点不同也容易出错,需要编译,这里做介绍 一.安装依赖 gcc open ...
- nginx+tomcat+redis的集群+session共享
nginx+tomcat+redis的集群+session共享 环境准备 1.tomcat版本:tomcat7 tomcat下载及安装,目前很多好的资源和步骤,此处省略. 2.jdk版本:jdk1.7 ...
- Shiro+Redis实现tomcat集群session共享
一.背景 当我们使用了nginx做项目集群以后,就会出现一个很严重的问题亟待解决,那就是:tomcat集群之间如何实现session共享的问题,如果这个问题不解决,就会出现登陆过后再次请求资源依旧 ...
- session服务器Nginx+Tomcat+Memcached集群Session共享
cookie是怎样工作的? 例如,我们创立了一个名字为login的Cookie来包含访问者的信息,创立Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名是“Michael Jor ...
- 【转】Nginx+Tomcat+Memcached集群Session共享
cookie是怎样工作的? 例 如,我们创建了一个名字为login的Cookie来包含访问者的信息,创建Cookie时,服务器端的Header如下面所示,这里假设访问者的注册名 是“Michael J ...
- redis实现tomcat集群session共享
1.部署两个tomcat节点,使用nginx实现集群(见http://www.cnblogs.com/zhangzhi0556/articles/nginx.html): 2.redis安装(见h ...
- 基于Memcached的tomcat集群session共享所用的jar
多个tomcat各种序列化策略配置如下:一.java默认序列化tomcat配置conf/context.xml添加<Manager className="de.javakaffee.w ...
随机推荐
- [leetcode] 并查集(Ⅰ)
预备知识 并查集 (Union Set) 一种常见的应用是计算一个图中连通分量的个数.比如: a e / \ | b c f | | d g 上图的连通分量的个数为 2 . 并查集的主要思想是在每个连 ...
- Unity 游戏框架搭建 2019 (三十六~三十八) partial与public
在上一篇,我们把菜单的顺序从头到尾整理了一遍.在整理菜单顺序的过程中,记录了一个要做的事情. 要做的事情: (完成) 备份:导出文件,并取一个合理的名字. 整理完菜单顺序后,学习新的知识,解决随着示例 ...
- 20199308《Linux内核原理与分析》第十二周作业
一.实验简介 竞态条件是指多个线程同时访问或者操作同一块数据,运行的结果依赖于不同线程访问数据的顺序.如果一个拥有root权限的程序存在竞态条件漏洞的话,攻击者可以通过运行一个平行线程与漏洞程序竞争, ...
- Spring Boot JPA中java 8 的应用
文章目录 Optional Stream API CompletableFuture Spring Boot JPA中java 8 的应用 上篇文章中我们讲到了如何在Spring Boot中使用JPA ...
- centos6安装创建kvm虚拟机
的虚拟机名 virsh domid name # 显示虚拟机id号 virsh domuuid name ...
- php-fpm7 启动脚本
[root@bbs init.d]$ cat php-fpm7 #!/bin/sh # DateTime:20170918 # Source function library. . /etc/rc.d ...
- 关于Python的JSON
1.json模块load/loads.dump/dumps区别:(摘自这里) 实际上json就是python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串,python ...
- Win10美吱er吱er,Win10修改默认字体的方法
请参考以下步骤(需要修改注册表,修改前请先备份,以便在出现问题时能够及时恢复): 例:将系统字体改为宋体 1.Windows+r,输入:regedit 2.定位以下路径:HKEY_LOCAL_MACH ...
- 洛谷P1122 最大子树和 树形DP初步
小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明就向老师提 ...
- Makefile中的CFLAGS,LDFLAGS,LIBS
CFLAGS:C编译器选项,而CXXFLAGS表示C++编译器的选项 1. CFLAGS参数 选项 说明 -c 用于把源码编译成.o对象文件,不进行链接过程 -o 用于连接生成可执行文件,在其后可以指 ...