nginx+tomcat8+memcached实现session共享

安装nginx-1.13.8

安装jdk1.8.0_144

安装tomcat-8.5.24

安装memcached-1.4.15

下载tomcat8连接memcached所需jar包

官方参考资料:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#decide-which-serialization-strategy-to-use



配置nginx

以下是我的主配置文件,请根据自己情况进行修改


worker_processes  1;

events {

worker_connections  1024;

}

http {

include       mime.types;

default_type  application/octet-stream;

sendfile        on;

keepalive_timeout  65;

upstream tomcat_nginx {

        server 192.168.3.58:8080;

        server 192.168.3.54:8080;

        server 192.168.3.31:8080;

}

server {

listen       80;

server_name  localhost;

location / {

  proxy_pass http://tomcat_nginx;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

}

}

配置nginx的启动脚本


#! /bin/bash

# Description: Startup script for webserver on CentOS. cp it in /etc/init.d and

# chkconfig --add nginx && chkconfig nginx on

# then you can use server command control nginx

#

# chkconfig: 2345 08 99

# description: Starts, stops nginx

set -e

PATH=$PATH:/usr/local/nginx/sbin/

DESC="nginx daemon"

NAME=nginx

DAEMON=/usr/local/nginx/sbin/$NAME

CONFIGFILE=/usr/local/nginx/conf/nginx.conf

#PIDFILE=/var/run/nginx.pid

PIDFILE=/usr/local/nginx/logs/nginx.pid

SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.

test -x $DAEMON || exit 0

d_start() {

$DAEMON -c $CONFIGFILE || echo -n " already running"

}

d_stop() {

kill -QUIT `cat $PIDFILE` || echo -n " not running"

}

d_reload() {

kill -HUP `cat $PIDFILE` || echo -n " can't reload"

}

case "$1" in

start)

echo -n "Starting $DESC: $NAME"

d_start

echo "."

;;

stop)

echo -n "Stopping $DESC: $NAME"

d_stop

echo "."

;;

reload)

echo -n "Reloading $DESC configuration..."

d_reload

echo "reloaded."

;;

restart)

echo -n "Restarting $DESC: $NAME"

d_stop

sleep 1

d_start

echo "."

;;

*)

echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2

exit 3

;;

esac

exit 0

感觉有必要搞个githup账号用来管理配置文件了

启动nginx



编写tomcat的测试页面,一下是两种格式的,都可以用(放在webapps/ROOT/)


<html>

<body bgcolor="green">

<center>

<%=  request.getSession().getId()  %>

<h1>192.168.3.31</h1>

<h1>port:8080</h1>

<h1>this is tomcat 1! </h1>

</center>

</body>

</html>

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%>

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

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

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

<%     out.println("This is Tomcat server 54 !");     %>

启动tomcat

tomcat访问测试

nginx访问测试



tomcat8+memcached实现会话共享

下载jar包

不同版本的tomcat使用的jar包可能会有区别,本测试使用的是tomcat-8.5.24

jar包详细列表及tomcat(注:jedis-2.9.0.jar是连接redis的jar包)

修改conf/context.xml(每个tomcat)

这里是 non-sticky sessions + kryo,建议参考官方文档:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration


<Context>

<WatchedResource>WEB-INF/web.xml</WatchedResource>

<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

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

memcachedNodes="n1:192.168.3.31:11211"

sticky="false"

sessionBackupAsync="false"

lockingMode="none"

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

sessionBackupTimeout="1000"

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

/>

</Context>

memcachedNodes是指定memcached,可以有多个节点,n1是标签,其他的靠猜

启动memcached,重启tomcat

访问测试



使用redis代替memcached

上面jar包里面jedis-2.9.0.jar就是连接redis的jar包,详情看官方的解释

测试失败(⊙﹏⊙)b



一堆版本不兼容的问题,尝试所有的jar包都用最新的结果不行

报错

缺少jar包或版本冲突



参考:  https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration#decide-which-serialization-strategy-to-use

https://wenku.baidu.com/view/caecc5cf6037ee06eff9aef8941ea76e58fa4abd.html

原文地址:http://blog.51cto.com/13323775/2059096

时间: 2024-08-11 04:36:09

nginx+tomcat8+memcached实现session共享的相关文章

nginx+tomcat8+memcached实现session 共享

操作环境: iP地址 角色 安装软件 10.43.2.135 nginx方向代理 memcached服务器 nginx   memcached 10.43.2.134 tomcat服务器 2个tomcat(端口分别为8080 8081) 实验中使用的软件如下: 实现思路: 第一步:针对10.43.2.134的操作 1.在10.43.2.134上安装2个tomcat 2.在$CATALINA/webapps/ROOT/下建立测试页面t.jsp 3.分别启动2个tomcat服务 4.打开http:/

nginx+tomcat8+memcached实现session共享具体操作

本次试验用到的软件包的版本如下: 一.针对10.43.2.134的操作 1.安装jdk环境 tar zxf jdk-8u5-linux-x64.tar.gz mkdir /usr/java mv jdk1.8.0_05/ /usr/java/ 编辑/etc/profile 在文档的末尾追加如下5行内容: JAVA_HOME=/usr/java/jdk1.8.0_05 JRE_HOME=/usr/java/jdk1.8.0_05/jre PATH=$PATH:$JAVA_HOME/bin:$JRE

NGINX + TOMCAT7 + MEMCACHED 实现SESSION 共享

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

【电商】nginx+tomcat+memcached实现session共享集群

在分布式多tomcat web集群环境下,首先要解决的是session的共享问题,一般的实现思路有: (1) session复制:多tomcat之间进行session的同步,集群中的tomcat存储相同的session信息 (2) 共享session存储:将session集中存储在同一个地方,如redis/memcached,甚至DB.tomcat本身的内存中并不存储session (3) session粘性:其实session粘性并不是session共享的方案,而是多tomcat的集群方案,配

nginx+tomcat+memcached构建session共享集群

一.安装配置tomcat 配置前说明: 系统为centos7 m1.xsllqs.com地址为192.168.1.107 c1.xsllqs.com地址为192.168.1.114 c2.xsllqs.com地址为192.168.1.113 安装tomcat需要配合JDK使用,JDK有oracle JDK和open JDK两种 oracle JDK8的下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-down

nginx+tomcat+memcached实现session共享

一.工作原理及原理图<img class="alignnone wp-image-31" src="http://119.29.25.60/wp-content/uploads/2016/04/图片1.bmp" alt="图片1" width="342" height="254" />工作原理        Tomcat中自带缓存功能.Memcached时一个集中式缓存器,可以利用tomcat和

Nginx + Memcached 实现Session共享的负载均衡

session共享 我们在做站点的试试,通常需要保存用户的一些基本信息,比如登录就会用到Session:当使用Nginx做负载均衡的时候,用户浏览站点的时候会被分配到不同的服务器上,此时如果登录后Session就在不同发服务器上,A记住了用户的登录状态,可是下一次用户请求被分配到B去了怎么办?不可能让用户再登陆一次.所以要实现session共享. 方法 1.ip_hash,这是Nginx的轮询方法,用户登录站点时,就会一直在这台服务器上就不存在Session的问题 优点:不需要采用任何处理: 缺

Memcached实现Session共享

一.memcached安装 1. memcached安装和启动.查看进程 安装扩展源 yum install -y epel-release 安装软件.组件.工具包 yum install -y libevent memcached libmemcached 启动 /etc/init.d/memcached start 进程 ps aux |grep memcached 解释: -d  启动一个守护进程 -p  监听的端口,默认11211 -u  运行memcached用户 -m 内存大小,单位

Tomcat基于MSM+Memcached实现Session共享

前言 在Tomcat集群中,当一个节点出现故障,其他节点该如何接管故障节点的Session信息呢?本文带来的解决方案是基于MSM+Memcached实现Session共享. 相关介绍 MSM MSM--Memcached Session Manager是一个高可用的Tomcat Session共享解决方案,除了可以从本机内存快速读取Session信息(仅针对黏性Session)外,同时可使用Memcached存取Session,以实现高可用. 工作原理 Sticky Session(黏性) 模式