文档章节

NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享

it_i_it
 it_i_it
发布于 2014/06/23 10:58
字数 660
阅读 6888
收藏 132
点赞 8
评论 16

TOMCAT7.0+ NGINX + MEMCACHED + memcached-session-manager 实现SESSION共享

http://blog.csdn.net/nerissa/article/details/18961361  ; //参考博客

http://pan.baidu.com/s/1pJlZ0mB    //相关包下载,含lib所需的jar包

环境:centOS 6.5(64位) 、jdk8_8u5 、tomcat7.054、nginx1.47、libevent-2.0 、memcached-1.4.20

10.1.1.127 // tomcat,nginx,memcached

10.1.1.128 // tomcat

tomcat 机配置

1、卸载自带jdk ,采用rpm 包安装

rpm –qa |grep java | xargs rpm -e --nodeps //批量卸载自带的jdk相关包

2、rpm 安装

rpm -ivh jdk-8u5-linux-x64.rpm //默认安装在 /usr/java

mv 改名改为 /usr/java/jdk

java -version //验证安装成功

3、写入环境

vim /etc/profile

JAVA_HOME=/usr/java/jdk

JRE_HOME=/usr/java/jdk/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export JAVA_HOME JRE_HOME PATH CLASSPATH

source /etc/profile // 环境生效

4.解压tomcat 测试运行

tar –zxf apache-tomcat-7.0.54.tar.gz  -C /usr/local

mv apache-tomcat-7.054 tomcat

vim /etc/sysconfig/iptables //防火墙开放8080端口

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

service iptables restart

http://10.1.1.127:8080/ //开启tomcat,测试tomcat安装成功

5.导入 msm-1.7包到 tom/lib/ ( tomcat 节点都要放

clip_image001

http://chenzhou123520.iteye.com/blog/1650212 //参考博客

6.更改tomcat session保存方式(Non-Sticky,kryo

 以下内容加到配置文件里

vim conf/context.xml

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:10.1.1.217:11211"

sticky="false"

lockingMode="auto"

sessionBackupAsync="false"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

//参数用法官方文档

https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration

章节Overview over memcached-session-manager configuration attributes

nginx 安装配置

1.源码包安装

#yum install pcre* //nginx 依赖pcre类库

#useradd nginx

#tar xf /share/soft/lamp/nginx/nginx-1.4.7.tar.gz -C /usr/src/

#cd /usr/src/nginx-1.4.7

#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module

# make && make install

2.nginx 反向代理,实现负载均衡代理后面两台tomcat 服务器

user nginx nginx;

worker_processes 5;

error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

pid logs/nginx.pid;

events {

worker_connections 1024;

use epoll;

}

http {

upstream session {

server 10.1.1.217:8080 weight=1 max_fails=2 fail_timeout=30s;

server 10.1.1.218:8080 weight=1 max_fails=2 fail_timeout=30s;

}

server {

listen 80;

server_name 10.1.1.217;

root /nginxroot/;

location ~ \.(txt|jsp)$ {

proxy_pass http://session;

}

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

}

}

mkdir /nginxroot/

//以上是简单的实现的是对jsp访问的均衡调度,实验随便改的

memcached 的安装 //先安装libevent(memcached依赖libevent)

1.安装

#tar zxvf libevent-2.0.21-stable.tar.gz

#cd&#160; zxvf libevent-2.0.21-stable

# ./configure --prefix=/usr

#make && make install

# tar zxvf memcached-1.4.20.tar.gz

#cd memcached-1.4.20

# ./configure --with-libevent=/usr

#make && make install

2.启动,关闭命令

//启动 -d 后台运行 –m 内存大小 –p 端口 –c 最大并发数

/usr/local/bin/memcached -d -m 128 -u root -p 11211 -c 256 -P /var/run/memcached.pid

kill `cat /var/run/memcached1.pid`&#160; //关闭

http://hxq0506.iteye.com/blog/1388971 //参考链接

测试:

启动顺序 tomcat – nginx – memcached

测试页面test.jsp,放入webapps/ROOT:

Server Info:

SessionID:<%=session.getId()%>

<br>

SessionIP:<%=request.getServerName()%>

<br>

SessionPort:<%=request.getServerPort()%>

<br>

<%

out.println("127"); //标记后端节点

%>

结果:session 保持不变

© 著作权归作者所有

共有 人打赏支持
it_i_it
粉丝 4
博文 27
码字总数 7005
作品 0
深圳
数据库管理员
加载中

评论(16)

剑侠-情缘
剑侠-情缘
1、不配置context.xml时nginx可以代理3个tomcat,一配置后访问测试页面没反应,访问页面tomcat日志一点动静没有;(tomcat1.7的lib下的包完全是按照上面所说的包下载并导入,nginx1.8,memcached1.4,OS:redhat6.5)
j
jet_c
你这个方法可以实现session共享么?
回头陌路
博主,请问你用msm配置session共享之后,当页面不停F5或者页面大量并发请求的时候,session是否会变化,我的当不停F5或者大量请求的时候session会变化
it_i_it
it_i_it

引用来自“zp-wmhx”的评论

apache和tomcat做session共享或集群更清楚,日志里面就打印的session被接管共享的信息,改天把多年前做的例子发上来
好的,期待
酷酷的就
酷酷的就
apache和tomcat做session共享或集群更清楚,日志里面就打印的session被接管共享的信息,改天把多年前做的例子发上来
品不懂
品不懂
mark
it_i_it
it_i_it

引用来自“PaulWong”的评论

TOMCAT有做集群么?

引用来自“it_i_it”的评论

没有啊,只是用nginx upsteam 做了个负载均衡而已

引用来自“电脑小童”的评论

1个nginx+2tomcat实现负载均衡,不就是集群吗?难道我理解错了

引用来自“it_i_it”的评论

都没做集群的配置啊,两者只是经过同个Nginx前端调度而已

引用来自“码农之路”的评论

集群就是这种意思吧,还有别的意思????
我知道的集群常见的有HA和LB,集群内的节点间是存在一定的交流的,比如ha,有台挂了,另外一台知道后就会顶上。我的一点小认识,你可以上网查查
魔法王者安琪拉
魔法王者安琪拉
不错,nginx转发,session实现共享
魔法王者安琪拉
魔法王者安琪拉

引用来自“PaulWong”的评论

TOMCAT有做集群么?

引用来自“it_i_it”的评论

没有啊,只是用nginx upsteam 做了个负载均衡而已

引用来自“电脑小童”的评论

1个nginx+2tomcat实现负载均衡,不就是集群吗?难道我理解错了

引用来自“it_i_it”的评论

都没做集群的配置啊,两者只是经过同个Nginx前端调度而已
集群就是这种意思吧,还有别的意思????
电脑小童
电脑小童

引用来自“PaulWong”的评论

TOMCAT有做集群么?

引用来自“it_i_it”的评论

没有啊,只是用nginx upsteam 做了个负载均衡而已

引用来自“电脑小童”的评论

1个nginx+2tomcat实现负载均衡,不就是集群吗?难道我理解错了

引用来自“it_i_it”的评论

都没做集群的配置啊,两者只是经过同个Nginx前端调度而已
你这里指的“都没做集群的配置”,这个配置是什么意思?难道是tomcat的session复制?
nginx+tomcat+msm集群共享session

一、Nginx安装 详见前文:http://www.cnblogs.com/yixiwenwen/p/3574097.html 二、memcached安装和启动   详见前文:http://www.cnblogs.com/yixiwenwen/p/3574137.html 三、配置Nginx实现......

chaun ⋅ 2015/08/18 ⋅ 0

基于MSM实现nginx负载均衡+tomcat集群+memcached(session共享)

Session共享的方案介绍 Session 共享有多种解决方法,常用的有四种:客户端 Cookie 保存、服务器间 Session 同步、使用集群管理 Session(如本文要介绍的Memcached Session Manager) 、把 ...

jaychang ⋅ 2016/01/20 ⋅ 7

分布式集群系统下的高可用session解决方案

目前,为了使web能适应大规模的访问,需要实现应用的集群部署. 而实现集群部署首先要解决session的统一,即需要实现session的共享机制。 目前,在集群系统下实现session统一的有如下几种方案:...

凯文加内特 ⋅ 2015/03/19 ⋅ 0

tomcat的session问题

记录客户端操作我们一般使用cookie进行客户身份识别,session存储客户端的信息,session保存在服务器端。当我们负载均衡服务后,客户端请求定位到另外一台服务器,session信息在另外一台服务...

Ailu0li ⋅ 2017/02/11 ⋅ 0

负载均衡会话共享

前言: 公司的产品上线了, 对于大并发量的客户访问和对手的攻击,真是苦不堪言,所以集群的部署重要,现在集群的部署一般有两种方式,第一种,看到大部分人的做法一般是Nginx+Memcached+Tomcat进行...

逝去的回忆 ⋅ 2016/09/28 ⋅ 0

MSM-Memcached_Session_Manager介绍及使用

我们都知道对于一些大型的web2.0的网站,在正式部署时一般是部署在不同故障域的多台应用服务器上,以j2ee应用为例,一般我们都会部署在tomcat下,假如我们部署了10台tomcat服务器,那这10台t...

凡尘里的一根葱 ⋅ 2015/11/06 ⋅ 0

Tomcat集群方案

一、 需求 多个tomcat要一起协同工作有几种办法,可以考虑的方案有以下几个: 1. 使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。但这个方案的效率比较...

nubo ⋅ 2013/03/01 ⋅ 6

两台服务器实现会话共享

前言: 公司的产品上线了, 对于大并发量的客户访问和对手的攻击,真是苦不堪言,所以集群的部署重要,现在集群的部署一般有两种方式,第一种,看到大部分人的做法一般是Nginx+Memcached+Tomcat进行...

逝去的回忆 ⋅ 2016/10/11 ⋅ 0

redis缓存服务器(Nginx+Tomcat+redis+MySQL实现session会话共享

一、redis介绍 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型...

腿毛的忧伤 ⋅ 2017/08/17 ⋅ 0

搭建Nginx + Memcached + Tomcat 集群记录

零:前言 1、单是从软件层面做负载,只能单主nginx服务器,主服务器挂了,系统就挂了 2、实现多台主nginx服务器,可采用DNS负载均衡,即同一个域名绑定多个IP(nginx服务器),按顺序分发 3、...

凡尘里的一根葱 ⋅ 2015/10/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 35分钟前 ⋅ 0

Kylin 对维度表的的要求

1.要具有数据一致性,主键值必须是唯一的;Kylin 会进行检查,如果有两行的主键值相同则会报错。 2.维度表越小越好,因为 Kylin 会将维度表加载到内存中供查询;过大的表不适合作为维度表,默...

无精疯 ⋅ 38分钟前 ⋅ 0

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及...

kim_o ⋅ 42分钟前 ⋅ 0

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 50分钟前 ⋅ 0

linux实用操作命令

参考 http://blog.csdn.net/qwe6112071/article/details/50806734 ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 同-a,但不列出"."和"...

简心 ⋅ 今天 ⋅ 0

preg_match处理中文符号 url编码方法

之前想过直接用符号来替换,但失败了,或者用其他方式,但有有些复杂,这个是一个新的思路,亲测可用 <?php$str='637朗逸·超速新风王(300)(白光)'; $str=iconv("UTF-8","GBK",$s...

大灰狼wow ⋅ 今天 ⋅ 0

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 今天 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 今天 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 今天 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部