NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享

原文地址: http://my.oschina.net/u/1791256/blog/283064

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 节点都要放

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  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`  //关闭

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 保持不变

时间: 2024-10-29 13:00:59

NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享的相关文章

nginx+tomcat+memcached实现session共享,tomcat7可以正常运行

问题描述 nginx+tomcat+memcached实现session共享,tomcat7可以正常运行 我用nginx+tomcat+memcached实现session共享,tomcat7可以正常运行,但是tomcat8就报Caused by: java.lang.NoSuchMethodError: org.apache.catalina.core.ApplicationSessionCookieConfig.getSessionCookieName(Lorg/apache/catalin

nginx+tomcat+redis完成session共享

本文记录nginx+redis+tomcat实现session共享的过程 nginx安装:http://blog.csdn.net/grhlove123/article/details/47834673 redis安装:http://blog.csdn.net/grhlove123/article/details/47783471 准备两个tomcat,修改相应的端口   名称 IP 端口 tomcat版本 JDK tomcat1 10.10.49.23 8080 7.0.40 1.7.0_25

weblogic可以使用memcached实现session共享吗?

问题描述 weblogic可以使用memcached实现session共享吗? 目前我的环境是nginx+weblogic双域实现负载均衡和高可用,但出现session共享问题,目前想用memcached实现,但网络上的资料大都是tomcat的,现在想请教一下weblogic的怎么做呢?请前辈们赐教 解决方案 http://blog.csdn.net/a__java___a/article/details/8738932 解决方案二: http://www.verydemo.com/demo_c

简直奔溃,搭建centos+nginx+tomcat+redis做session共享,启动报错

问题描述 简直奔溃,搭建centos+nginx+tomcat+redis做session共享,启动报错 环境是 centos6.4+nginx1.8+tomcat7.0.65+redis3.0.5+jdk1.7.......... 配置应该没有问题,但是启动tomcat的时候报 caused by: org.apache.catalina.LifecycleException: Unable to attach to session handling valve; sessions canno

tomcat集群memcached解决session共享 之 多个memcached节点之间如何同步session

问题描述 tomcat集群memcached解决session共享 之 多个memcached节点之间如何同步session tomcat集群memcached解决session共享 之 多个memcached节点之间如何同步session 问题简单描述: 多个tomcat集群,并且有多个memcached节点做session共享, 那么如何保证每一个tomcat从不同的memcached节点取session的一致性? 是不是每一个tomcat的session都会自动写入所有的memcached

Nginx+Tomcat7+Memcached实现tomcat集群和session共享问题

问题描述 由于最近项目要升级进行负载均衡,网上看了很多文章,确定还是用Nginx+Tomcat+Memcached实现tomcat集群和session共享这种方式来实现.经过网上一些配置参考Demo版本成功了.session也共享成功.在满心欢喜的情况下,还以为这么快就搞定了.事实不既然,我把我们web项目部署进去,结果出现很多问题.想必这些问题过来人肯定遇到过.问题如下:1.2个tomcat7单独启动,项目部署进去,都可以登录进去并运行.这是我的配置Memcached在tomcat7/conf

Nginx安装,Nginx静态缓存,Nginx Gzip压缩,Nginx负载均衡,Nginx方向代理,Nginx+Tomcat+Redis做session共享

Nginx安装 nginx-1.10.1.tar.gz安装,参考http://blog.csdn.net/tototuzuoquan/article/details/47381907. 修改nginx.conf的配置文件 #user  nobody; worker_processes  8;   error_log  logs/error.log; error_log  logs/error.log  notice; error_log  logs/error.log  info;   #pid

tomcat+nginx+memcached+windows session不能共享

问题描述 tomcat+nginx+memcached+windows session不能共享 困扰我两天了. 使用tomcat7+nginx,实现负载均衡,并且测试通过. 但是session不能够共享,项目登录之后,进行其他操作时候提示登录,说明nginx转发请求到其他tomcat时候,丢失了session. 加入memcached,想要实现session共享. 按照网上的说明配置,启动,但是session并不能实现共享. 下载的jar,拷贝到tomcat/lib下面. memcached下载

Tomcat7基于Redis的Session共享

目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户没一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无论用户的请求被转发到哪个服务器上都能保证用户的正常使用,即需要实现session的共享机制. 在集群系统下实现session统一的有如下几种方案: (1) 应用服务器间的session复制共享(如tomcat自带session共享) (2) 基于cache DB缓存的session共享 应用服务器间