nginx+tomcat+redis实现session共享(redisson形式)

实现nginx+tomcat+redis实现session共享

环境准备

(1)虚拟机centos7(虚拟ip:192.168.168.130)
(2)redis
(3)java8
(4)tomcat8
(5)nginx
首先我们要安装java环境,网上资源很多,可以自行搜索

(1)下载tomcat

这里使用的是tomcat8,下载好之后,上传到我们的虚拟环境张,解压放在一个文件夹下,我的文件夹目录为:/opt/tomcat/apache-tomcat-8.0.53
解压命令:

tar xcf  /opt/tomcat/apache-tomcat-8.0.53

启动tomcat,我们可以看到启动成功,并且成功访问
nginx+tomcat+redis实现session共享(redisson形式)_第1张图片
这是我们准备的第二步,成功访问之后,我们开始安装redis并与之进行互联

(2)下载redis-4.0.11.tar.gz(版本可能不一样)

将其上传至我们的虚拟环境,我的路径为:/opt/tomcat,执行解压命令

tar xcf redis-4.0.11.tar.gz

进入解压目录redis-4.0.11,执行make命令,之后进行make install,之后进入到src目录下:启动redis,可以看到成功启动。
[root@localhost src]# ./redis-server
nginx+tomcat+redis实现session共享(redisson形式)_第2张图片

(3)tomcat与redis的互联

(1)下载两个jar包,下载完成之后,将其放入tomcat的lib目录下。
redisson-all-3.8.1.jar
redisson-tomcat-7-3.8.1.jar
nginx+tomcat+redis实现session共享(redisson形式)_第3张图片
(2)在tomcat的conf文件夹下创建json文件mySession.json(文件名可以是任意的,但是要与下边的与之照应,下边会说到的)
json内容为:

{
   "singleServerConfig":{
      "idleConnectionTimeout":10000,
      "pingTimeout":1000,
      "connectTimeout":10000,
      "timeout":3000,
      "retryAttempts":3,
      "retryInterval":1500,
      "reconnectionTimeout":3000,
      "failedAttempts":3,
      "subscriptionsPerConnection":5,
      "clientName":null,
      "address": "redis://127.0.0.1:6379",
      "subscriptionConnectionMinimumIdleSize":1,
      "subscriptionConnectionPoolSize":50,
      "connectionMinimumIdleSize":32,
      "connectionPoolSize":64,
      "database":0
   },
   "threads":0,
   "nettyThreads":0,
   "codec":{
      "class":"org.redisson.codec.JsonJacksonCodec"
   },
   "transportMode":"NIO"
}

(3)这一步完成之后,我们需要在context.xml中配置读取这个配置文件,所以:

vim /opt/tomcat/apache-tomcat-8.0.53/conf/context.xml

在context便签下添加内容:(注意:文件名称一定要写成刚才我们创建的文件名)


(4)启动tomcat
这些准备工作完成了之后,我们开始启动tomcat,

cd /opt/tomcat/apache-tomcat-8.0.53/bin
./start.sh

启动完成之后,我们进行访问,可以看到与之前的小果一样,成功访问到,我们到redis的客户端进行查询,发现查询的session为空,所以,我们需要模拟一个获取session的方法。
在这里插入图片描述

vim /opt/tomcat/apache-tomcat-8.0.53/webapps/test/index.jsp

编辑内容为:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://"
                        + request.getServerName() + ":" + request.getServerPort()
                        + path + "/";
%>


        
                
                tomcatB
        

        
        

tomcatB

sessionId:

<%=session.getId()%>

session创建时间:

<%=session.getCreationTime()%>

保存之后,重新访问:

192.168.168.130:8080/test/index.jsp

nginx+tomcat+redis实现session共享(redisson形式)_第4张图片
再去查询redis的键值情况:
在这里插入图片描述
此时,已经关联完毕

(4)安装另外一台tomcat,直接复制我们现在所运行的tomcat即可

(当然了,如果是两台机器的话也是可以的)

cp  -r  /opt/tomcat/apache-tomcat-8.0.53  /opt/tomcat/tomcat8090

之后修改端口:

vim /opt/tomcat/tomcat8090/

修改的地方有:
(1)由8009改为8010

  
    

(2)由之前的8080改为8090

 

(3)由8005改为8006


修改index.jsp页面,方便与之前的区分开

vim /opt/tomcat/tomcat8090/webapps/test/index.jsp

将tomcat修改为tomcat8090

 

tomcatA8090

sessionId:

<%=session.getId()%>

session创建时间:

<%=session.getCreationTime()%>

启动开始访问:
访问第一个:

192.168.168.130:8080/test/index.jsp

nginx+tomcat+redis实现session共享(redisson形式)_第5张图片
访问第二个tomcat

192.168.130:8090/test/index.jsp

nginx+tomcat+redis实现session共享(redisson形式)_第6张图片
可以看到我们访问的是不同的tomcat但是sessionId是一样的,这说明我们配置的通过redis实现tomcat之间session的共享已经完成

(5)安装nginx,实现最后一步

nginx的下载安装我们可以在网上自我搜索实现。
下载好nginx,解压,解压之后,进入到解压目录,,执行make && make install,之后信息会提示我们,nginx被安装到了/usr/local/nginx文件夹下:
编辑配置文件:

 upstream tomcat {
     server 192.168.168.130:8080 weight=1;
     server 192.168.168.130:8090 weight=1;
    }
    server{
         `````````
	     location / {
	           # root   html;
	           # index  index.html index.htm;
	           proxy_pass http://tomcat;
	        }
	        `````````
	   }

之后启动服务
在这里插入图片描述
启动成功之后,我们通过浏览器进行访问:

192.168.168.130/test/index.jsp

nginx+tomcat+redis实现session共享(redisson形式)_第7张图片
页面刷新
nginx+tomcat+redis实现session共享(redisson形式)_第8张图片
可以看到我们已经成功的访问到了不同的页面,但是sessionID是一样的,这说明我们已经成功的通过nginx+tomcat+redis实现了session的共享。
不建议在windows中使用,因为会出现各种奇怪的问题,当然了,如果小主没有出现问当然是最好的!!!
有什么问题望留言,大家一起学习一起进步。

你可能感兴趣的:(tomcat,集群)