百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

tomcat+redis+nginx的session共享

off999 2025-02-04 15:29 32 浏览 0 评论

上两节中,我们使用nginx+tomcat+memcached+MSM实现session共享,如何有需要对nginx负载均衡方面的知识需要了解的话,可以关注我的头条号:一点热。然后阅读之前的文章。同时,我已经把上一节配置的资料放到github了,如果需要配置的资源可以在上面下载,地址

https://github.com/yeehot/nginx_tomcat_session_msm

上一节快速入口:

tomcat+Nginx负载均衡对session处理2

虽然上一节使用MSM可以很好解决我们的问题,但是,我们要为大家讲解另外一种方法来实现session共享,那就是使用redis+
tomcat-redis-session-manager
,那么什么是redis,那么我们为什么需要用Redis,?带着这些问题,我们开始我们今天的课程

1、什么是Redis?

Redis,它是基于key-value的存储系统,它的读写速度异常的快,可以支持多种数据类型,它其实也是有点类似memcaced,不过实际上可能会比memcaced更加优越,所以很多人都在使用redis.我们的直播系统也使用这个redis数据用来存储聊天记录,读写速度非常快,对于详细的的分析大家可以自行了解,我这里就不做详细的解释了。

官网地址:http://redis.io/

Redis在客户端支持的语言

2、实验环境

Ubuntu系统

Nginx:实现负载均衡

tomcat:后端服务器

redis:session同步

springmvc:java项目,Yeehot-Program-King

VM:两台虚拟机:VM1:192.168.3.4,VM2:192.168.3.5

Nginx部署在192.168.3.5

3、负载均衡+tomcat的搭建

我这里就不做详细的介绍了,在前面的文章已经介绍过很多次了。可以看回我头条号:一点热的文章

http://toutiao.com/i6299200039424098818/

试验环境,我这里如下:

jsp测试代码

<%@pagecontentType="text/html; charset=UTF-8"%><%@pageimport="java.util.*"%><%= request.getLocalAddr() %>

<%=request.getRemoteAddr() %>

<%out.println("

yeehot.com+tomcat+nginx+msm+memcached

SESSION ID:" + session.getId()+"

");%>

输入192.168.3.5访问spring MVC项目,打印出服务器IP和session id

4、Redis的安装

我这里以3.2.1的版本为例,安装在VM2:192.168.3.5,端口6379

下载地址:
http://download.redis.io/releases/redis-3.2.1.tar.gz

编译redis

wget http://download.redis.io/releases/redis-3.2.1.tar.gz

tar zxvf redis-3.2.1.tar.gz

cd redis-3.2.1

make

make install

安装结果如下:

5、启动Redis

/usr/local/bin/redis-server

测试redis

redis-cli

如果出现

127.0.0.1:6379> 说明启动成功

测试输入

6、
tomcat-redis-session-manager打包

在上一节中,我们使用MSM工具来实现我们的tomcat+session共享,这里,我同样需要借助于第三方的开源工具
tomcat-redis-session-manager来实现session共享

大家可以到github上下载

https://github.com/jcoleman/tomcat-redis-session-manager

需要用到如下的包

  • tomcat-redis-session-manager-VERSION.jar

  • jedis-2.5.2.jar

  • commons-pool2-2.2.jar

不过要注意的是,这里只能够用于tomcat6、和tomcat7.对于tomcat8还有一些问题来。所以,我这里的tomcat环境把它调整为tomcat 7

我这里以tomcat7为例子

https://github.com/jcoleman/tomcat-redis-session-manager/tree/tomcat-7

我这里介绍一下,使用myelcipse打包方法

  • 新建一个web 项目,并支持maven,输入如下内容

选择标准的maven项目包结构的方式

  • 把https://github.com/jcoleman/tomcat-redis-session-manager/tree/tomcat-7的源码复制到项目中

  • 修改上面的错误,上面的错误是由于缺少了包导致的,在pom.xml输入3个包

org.apache.tomcat

tomcat-catalina

7.0.27

redis.clients

jedis

2.5.2

org.apache.commons

commons-pool2

2.2

这个时候错误已经不见了。

  • 打包项目

我们直接把java 文件打包就好,其余的不用打包,如图


7、把三个包放入到tomcat/lib

  • tomcat-redis-session.jar,是我们刚刚打包的jar,其余的是maven下载的

tomcat-redis-session.jar

commons-pool2-2.2.jar

jedis-2.5.2.jar

8、修改tomcat/conf下的content.xml

host="localhost"

port="6379"

database="0"

maxInactiveInterval="60" />

9、启动Nginx,然后启动两台VM1 ,VM2的tomcat。

访问tomcat,可能会出现Could not get a resource from the pool的问题,看样子是连接池没有了,网上一大堆说这个,其实根本不是这个问题,因为我们刚刚明明可以在本地连接的,怎么到这来就出现没有连接池了。

其实是IP地址没有解绑

我们可以输入vi /etc/redis/redis.conf

然后可以看到

bind 127.0.0.1

我们为了可以远程连接,其实把他注释就好了

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

redis.clients.util.Pool.getResource(Pool.java:42)

redis.clients.jedis.JedisPool.getResource(JedisPool.java:84)

com.radiadesign.catalina.session.RedisSessionManager.acquireConnection(RedisSessionManager.java:112)

com.radiadesign.catalina.session.RedisSessionManager.loadSessionFromRedis(RedisSessionManager.java:387)

com.radiadesign.catalina.session.RedisSessionManager.findSession(RedisSessionManager.java:321)

org.apache.catalina.connector.Request.doGetSession(Request.java:3028)

org.apache.catalina.connector.Request.getSessionInternal(Request.java:2642)

com.radiadesign.catalina.session.RedisSessionHandlerValve.invoke(RedisSessionHandlerValve.java:28)

org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)

org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)

org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082)

org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623)

org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

java.lang.Thread.run(Thread.java:745)

2、此外,可能会有防火墙的问题

我们可以使用如下指令打开端口

/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT

最后运行的结果

可以看到上面的session,两台服务器都没有变化,说明我们的session共享已经成功了。

今天的课程讲到这里,下一节继续讲解spring MVC +session+redis的方法,欢迎继续关注我的头条号:一点热

如果需要配置内容,可以到我的github下载,
https://github.com/yeehot/tomcat_redis_nginx_session

转载到其它网站请与我联系。欢迎收藏与转发

相关推荐

无需手机号注册qq小号(不用手机号qq申请账号免费注册)
  • 无需手机号注册qq小号(不用手机号qq申请账号免费注册)
  • 无需手机号注册qq小号(不用手机号qq申请账号免费注册)
  • 无需手机号注册qq小号(不用手机号qq申请账号免费注册)
  • 无需手机号注册qq小号(不用手机号qq申请账号免费注册)
app下载注册(app下载注册d39qdf7)

1,电脑注册:打开QQ登录页面,点击立即注册。2,会弹出一个网页,填写上昵称、密码、手机号码等信息后,点击立即注册,即可注册QQ账号。3,手机注册,打开QQ进入登录页面,点击新用户注册。然后会提示输入...

第三方视频播放器哪个软件好

风雷影音播放器2.1.0.5风雷影音II独创双播放内核,聚合MPlayer和MPC强大优势功能,全面支持高清影片流畅播放,无需安装第三方软件,采用级联式多层过滤解码,全面提升影片兼容播放。能够完美播放...

nba2k22安卓版下载(nba2k24苹果版下载免费)

①可能是下载的版本与手机系统不匹配,系统运行不了,用户无法进行安装和使用。②可能是网络线路方面的原因,用户在对其进行使用过程中,网络数据出现故障等情况。③软件厂商没有对安卓系统进行开发,导致安卓用户不...

手机勒索病毒下载(下载木马病毒)

下载抖音极速版是没有病毒的,抖音极速版就跟抖音一样,都是刷视频的一种娱乐软件而且两个软件都是一家公司开发的,抖音极速版刷视频还可以赚金币得现金,每天所赚的金币第二天凌晨系统会自动兑换成现金,很多人下载...

store软件下载(store软件下载最新版)

在OPPO手机里应用商城里头搜索appstore都可以一键下载了,大家写下载的软件或者是APP都要在你手机里的应用商城里头下载,这样里头是没有木马和病毒的而且下载的都是正规的软件和APP,而且安装是...

qq五笔输入法官方下载(qq五笔输入法手机版官方正式版)

打开应用安装目录,打开程序文件在里面再设置一下,让qq拼音为首选输入法,记住切换输入法的切换键,再不行的话从新安装一下即可遇到这种问题可以尝试以下几种办法:1、重装输入法并从重启一下电脑。有些输入法...

查找iphone官网入口(查找iphone官网入口的详细指南)

查找我的苹果官网入口:http://www.apple.com.cn/并点击页面右上角的技术支持选项。2.选择您要查询的设备比如说您要查询iPhone的话就选择iPhone3.在iPhone的技术支持...

nba比赛直播(nba比赛直播免费观看直播jrs)
nba比赛直播(nba比赛直播免费观看直播jrs)

NBA比赛直播可以在多个渠道观看,包括电视、网络直播和手机应用等。在电视方面,国内的CCTV-5和湖南卫视等频道都有播出NBA比赛的节目;在网络直播方面,腾讯体育、优酷体育、爱奇艺体育等平台都有提供NBA比赛的直播服务;在手机应用方面,NB...

2026-01-21 14:03 off999

电脑版ps免费安装包(电脑免费安装photoshop)

1.在搜索引擎中输入adobe并点击搜索。2.点击adobe官网。3.点击支持并点击下载与安装。4.点击开始免费试用并点击下载。5.打开文件夹并点击打开进行安装即可。6.根据以上步骤即可下载安装ps。...

cad制图手机版免费(手机cad制图软件中文免费2020年)

手机上看CAD图纸的软件有很多,应用商店一搜一大堆,有几个我觉得不错的,CAD迷你看图最早之前用过,安装包小,确实迷你,看一般小的图纸还可以,大了就不太好用,经常会卡。CAD快速看图,软件就像名字一样...

七龙珠游戏格斗手机版(七龙珠游戏格斗手机版破解版)

龙珠的卡带对打游戏一共有3个;FC的一个:天下第一武道会GBA两个:对决,舞空斗剧补充;SFC游戏超武斗传.已经知道了.....游戏平台为PS2(虽然wii也有点可能...)....里面龙珠系列的游...

ocr文字识别(ocr文字识别软件)

从广义上说,OCR文字识别也算是人工智能技术,随处可见的人脸识别、OCR识别、指纹识别和虹膜识别技术等人工智能,错落应用在各大领域之中,促进当代企业服务向智能化、自动化转型。云脉OCR开发者平台开放人...

手机微信网页版登录(微博官网网页版入口)

手机微信网页登陆的入口:1、电脑浏览器地址输入wx点qq点com,回车进入微信网页版登录页;2、手机打开登录自己微信,打开扫一扫功能,扫描网页版上的二维码;3、然后手机点击确定,即可成功登录微信网页版...

qq影音播放器官方下载(qq影音播放器2018 免费版)

因为放到手机内存里面只是个压缩文件,所以本身的播放器是用不了的,只能qq音乐才可以用--,用视频下载软件来下载吧,视频下载软件可以直接下载到MP4格式的文件。qlv格式是没有转换器可以转换格式的。你...

取消回复欢迎 发表评论: