「Rainbond最佳实践」Tomcat配置Redis实现Session共享

基于Rainbond的最佳实践

Tomcat配置Redis实现Session共享

Rainbond:生产级无服务器PaaS Rainbond是国内首个开源的生产级无服务器PaaS,深度整合基于Kubernetes的容器管理、多类型CI/CD应用构建与交付、多数据中心的资源管理等技术,提供云原生应用全生命周期解决方案,构建应用与基础设施、应用之间及基础设施之间的互联互通生态体系。 点击安装

为了使您的应用承受更多的并发,提高应用稳定性,您需要在适当情况下进行扩容。每个节点下的Tomcat只存储来访问自己的请求时产生的session,为了解决扩容后session持久化的问题,我们提供 **Java的War包项目使用Tomcat配置Redis实现Session共享** 解决方案,将您session储存在redis中来保证您应用程序稳定性。如图所示:

若 Load Balancing 将请求发送给 container 1 下的 tomcat A ,同时产生 session ,将此 session 持久化到Redis 中。当 Web Server 再次发送请求,若请求到 container 2的 tomcat A ,此时会在Redis 中找到已存在的 session,即取即用。

通过源码构建,您可以通过如下两种方式实现 配置redis实现session共享:

01

使用Webapp-Runner或Jetty-Runner

云帮使用 webapp-Runner 内嵌的 tomcat 或 jetty-Runner 内嵌的 jetty 实现服务器功能。在您不创建其他服务器情况下即可轻松将应用部署在云帮。通过以下步骤可实现 配置redis实现session共享。

  1. 配置Procfile:将如下命令添加到您的Procfile中,并源码根目录下添加Procfile。 {% include copy-clipboard.html %} web: java -jar ./webapp-runner.jar --port 5000 --session-store redis ./*.war
    • 在Procfile中指定端口--port 5000
    • 应用控制台-端口设置8080端口
    • 应用端口8080,平台默认开启应用5000端口,为了端口映射正常:
    • 指定session存储--session-store redis
  2. 配置webserver:在源码根目录下添加webserver文件,写入现平台支持webapp-runner版本: {% include copy-clipboard.html %} webapp-runner-7.0.57.2.jar {% include copy-clipboard.html %} webapp-runner-8.0.18.0-M1.jar {% include copy-clipboard.html %} webapp-runner-8.5.5.2.jar
  3. 云帮通过源码创建应用,在创建应用-应用设置选择已创建的Redis进行依赖关联。
  4. 应用配置redis:将REDIS_URL新增至应用环境变量中,值为 127.0.0.1:6379
  5. 重启应用以适配

{{site.data.alerts.callout_success}}

为方便创建应用时依赖,建议提前通过应用市场创建 Redis 应用;若您未在创建时依赖Redis应用,也可以在应用创建完成后在 应用控制台-依赖进行Redis应用关联。关联后记得重启应用哦。

{{site.data.alerts.end}}

02

使用docker镜像

云帮提供使用定制 tomcat 容器来启动应用的方法。通过以下步骤可实现 配置redis实现session共享。

  1. 创建Dockerfile,写入如下内容: {% include copy-clipboard.html %} FROM goodrainapps/tomcat:7.0.82-jre7-alpine RUN rm /usr/local/tomcat/webapps/ROOT COPY <dir_name> /usr/local/tomcat/webapps/ROOT #<dir_name>为源码目录名称 EXPOSE 8080 {% include copy-clipboard.html %} FROM goodrainapps/tomcat:7.0.82-jre7-alpine RUN rm /usr/local/tomcat/webapps/ROOT COPY <filename>.war /usr/local/tomcat/webapps/ROOT.war EXPOSE 8080
    • 使用war包
    • 使用源码
  2. 确认源码的<dir_name><filename>.war存在,并且与Dockerfile文件存在同一目录,以此目录为根目录开始创建应用
  3. 创建应用-应用设置选择已创建的Redis进行依赖关联。
  4. 应用配置redis:配置变量REDIS_URL到应用环境变量中,值为 127.0.0.1:6379;配置变量REDIS_SESSION到应用环境变量中,值为true
  5. 重启应用以适配

下期预告:#最佳实践#Spring Boot框架配置MySQL

原文发布于微信公众号 - 好雨云(goodrain-cloud)

原文发表时间:2018-01-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

利用Centos或RedHat的iso镜像搭建本地yum仓库

这两天工作是用几台 PC 机给开发组搭建本地测试环境:CentOS-6.4-x86_64 + ant + svn。 为了操作简单及系统稳定,全部系统采用最小化安...

4115
来自专栏草根专栏

学习docker on windows (1): 为什么要使用docker

为什么要用Docker? 如果我们想使用某种pc软件, 那么在互联网上查找并安装软件的流程大致如下图: ? 那么这就有几个问题要弄清楚: 从哪里获得软件 Ap...

3876
来自专栏bluesummer

Windows下docker的安装,将ASP.NET Core程序部署在docker中

参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html https...

4866
来自专栏智能合约

centos安装lnmp环境

4345
来自专栏美丽应用

备选方案:在Linux Deploy上使用镜像部署Linux系统

4665
来自专栏个人分享

Linux知识体系之路径属性与目录

  最近在看鸟哥的Linux私房菜,我觉得这本书还是很不错的。这里进行相关的总结。

1011
来自专栏散尽浮华

Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)--负载均衡marathon-lb

之前介绍了Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)的操作,多余的废话不说了,下面接着说下在该集群环境下的负载均衡ma...

4479
来自专栏编程坑太多

『高级篇』docker之gitlab和jenkins安装(42)

PS:可能有的插件安装不了,不要慌老铁,进入到jenkins的管理页面会提示你更新jenkins更新下,然后插件又可以自动下载安装完毕了。

1721
来自专栏Linux运维学习之路

day10、nfs+rsync全网备份及实时同步

题目要求 注意:博主使用的系统为: [root@web01 ~]# uname -a Linux web01 2.6.32-696.el6.x86_64 #1...

6676
来自专栏写写代码吃吃瓜

Ubuntu环境下Tornado环境部署

1757

扫码关注云+社区

领取腾讯云代金券