深入浅出Docker技术- tomcat redis session 共享

 环境准备:

   docker/centos7

实例机器:
  192.168.0.1

192.168.0.2


采用普通方式:

       http://www.dczou.com/viemall/535.html

本章采用的基于Docker 方式;

      通过TomcatClusterRedisSessionManager  方式来实现redis共享;

启动redis容器:   

docker run -d –name=redis  -p 6379:6379 –restart=always redis:4.0.9  –requirepass "shop_123"

 

创建Tomcat 的镜像文件;

#cd /opt/program/tools/docker-file/tomcat-session-redis (dockerfile看附件)

# docker build -t  tomcat8-session-redis:v1 .

# 把镜像文件push公司的harbor镜像仓库中;

: 根据你的信息修改conf/redis-data-cache.properties 的redis 配置信息;

 

 启动Tomcat-A容器:

     在机器: 192.168.0.1

   docker run -d –name=tomcat-1  -p 8084:8080 -v /opt/program/tools/docker-file/tomcat-session-redis/viemall-session-test:/usr/local/tomcat/webapps/ROOT –restart=always tomcat8-session-redis:v1

启动Tomcat-B容器:

     在机器: 192.168.0.2

      docker run -d –name=tomcat-2  -p 8084:8080 -v /opt/program/tools/docker-file/tomcat-session-redis/viemall-session-test:/usr/local/tomcat/webapps/ROOT –restart=always tomcat8-session-redis:v1

 

测试流程:

为了方便我直接采用阿里云的SLB方式(可以采用其他负载服务器)来进行session的高可用测试,并且进行负载测试;

采用SLB 统一监听入口 http://xx.190.126.100/SessionServlet

image.png

登录redis客户端,查看session

  image.png

session已经被保存到redis

下面,我们进行一项测试

查看两台机器的后台日记,可以看到阿里云SLB会负载个上面两台服务器;

image.png 

然后将对应的tomcat停掉

刷新该应用,sessionId未变,则表示redis保存session成功。

该方案将session集中保存在了redis服务器,并做了主备容灾,从一定程度上提高了系统的高可用,由于

redis是内存存储,访问效率较高,在性能上也是比较好的,但是在用户量 非常大,并发访问量非常高的时候,session服务器会成为性能瓶颈。

本章所有的资料文件:

    https://gitee.com/gz-tony/viemall-dubbo/tree/master/viemall-docekr/dockerfile/tomcat-session-redis