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

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

以前单机系统,我们session是存储是tomcat容器管理的。
但是现在集群系统的话,必须第三方存储session才行,springboot2支持很多存储,其中redis存储session最为流行;下面我们介绍下springboot+nginx+tomcat+redis实现session共享

1.docker上安装redis

docker pull redis:5

在这里插入图片描述
启动redis

docker run -p 6379:6379 -d redis:5

然后我们用Redis Desktop Manager 工具连接redis
在这里插入图片描述
我们下面新建springboot项目
在这里插入图片描述
因为用到redis,要加如下依赖

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>
<dependency>
    <groupId>io.lettuce</groupId>
    <artifactId>lettuce-core</artifactId>
</dependency>

application.yml配置

spring:
  session:
    store-type: redis #指定redis实现spring session
    timeout: PT1H # Session 过期时间, PT开头  ‘D’ – 天   ‘H’ – 小时  ‘M’ – 分钟 ‘S’ – 秒

    redis:
      flush-mode: on_save # Sessions 刷新模式  on_save http response为committed才提交 immediate 立即提交
      namespace: cpxtt  # session 存储命名空间

  redis:
    host: 服务器ip地址
    port: 6379
    password:
    lettuce:
      pool:
        max-active: 8  # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1  # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 8  # 连接池中的最大空闲连接
        min-idle: 0  # 连接池中的最小空闲连接
      shutdown-timeout: 100  # 连接超时时间(毫秒)

我们直接通过HttpSession设置 即可把session存到redis中去;代码可以找本人获取

下面我们编写DockFile来实现项目自动运行
我们打包项目,因为是集群,所以两个项目版本分别搞成v1和v2 端口分别是8888和9999
项目1:

FROM centos
MAINTAINER cpxtt<cpxtt@126.com>
LABEL name="cpxtt Jre Image" \build-date="20200529"
ADD server-jre-8u151-linux-x64.tar.gz /home/
ADD springsession-v1.jar /home/
ENV WORKPATH /home/
WORKDIR $WORKPATH
ENV JAVA_HOME /home/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
EXPOSE 8888
CMD java -jar /home/springsession-v1.jar

项目2:

FROM centos
MAINTAINER cpxtt<cpxtt@126.com>
LABEL name="cpxtt Jre Image" \build-date="20200529"
ADD server-jre-8u151-linux-x64.tar.gz /home/
ADD springsession-v2.jar /home/
ENV WORKPATH /home/
WORKDIR $WORKPATH
ENV JAVA_HOME /home/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
EXPOSE 9999
CMD java -jar /home/springsession-v2.jar

构建镜像

docker build -f myJreDockerFile -t cpxtt/myjre:1.1 .
docker build -f myJreDockerFile2 -t cpxtt/myjre:2.1 .

并且启动镜像

docker run -itd -p 8888:8888 eb587d987876
docker run -itd -p 9999:9999 45b7242944ca

浏览器访问测试

下面我们使用nginx来进行测试
因为本机自动有个nginx,我们先关掉,我们用 docker里的nginx

systemctl stop nginx.service

我们配置下nginx负载均衡
配置nginx.conf;
在http模块下配置下加

upstream www.jiangnanfeipeng.com{
         server 172.17.0.2:8888 ;
         server 172.17.0.3:9999 ;
    }

在http下的server模块

location / {
        proxy_pass   http://www.jiangnanfeipeng.com;
        index  index.html index.htm;
    }

hosts里配置下映射

服务器ip地址  www.jiangnanfeipeng.com

启动nginx

docker run -it --name=myNginx66 -v /home/data/nginx:/etc/nginx   -p 80:80 nginx

到此springboot+nginx+tomcat+redis实现session共享讲解完成,感兴趣欢迎点赞留言和评论,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值