V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Igotyouinmysight
V2EX  ›  分享发现

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

  •  
  •   Igotyouinmysight · 2018-01-03 14:32:16 +08:00 · 1556 次点击
    这是一个创建于 2518 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    <center></center>

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

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

    使用 Webapp-Runner 或 Jetty-Runner

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

    1. 配置Procfile:将如下命令添加到您的 Procfile 中,并源码根目录下添加 Procfile。

      web: java -jar ./webapp-runner.jar --port 5000 --session-store redis ./*.war
      
      • 应用端口 8080,平台默认开启应用 5000 端口,为了端口映射正常:
      • 指定 session 存储--session-store redis
    2. 配置 webserver:在源码根目录下添加 webserver 文件,写入现平台支持 webapp-runner 版本:

      webapp-runner-7.0.57.2.jar
      
      webapp-runner-8.0.18.0-M1.jar
      
      webapp-runner-8.5.5.2.jar
      
    3. 云帮通过源码创建应用,在创建应用-应用设置选择已创建的 Redis 进行依赖关联。

    4. 应用配置 redis:将REDIS_URL新增至应用环境变量中,值为 127.0.0.1:6379

    5. 重启应用以适配

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

    使用 docker 镜像

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

    1. 创建 Dockerfile,写入如下内容:

      • 使用源码

    dockerfile 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

    - 使用 war 包
    
    
    ```dockerfile
    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
    
    1. 确认源码的<dir_name><filename>.war存在,并且与 Dockerfile 文件存在同一目录,以此目录为根目录开始创建应用

    2. 创建应用-应用设置选择已创建的 Redis 进行依赖关联。

    3. 应用配置 redis:配置变量REDIS_URL到应用环境变量中,值为 127.0.0.1:6379;配置变量REDIS_SESSION到应用环境变量中,值为true

    4. 重启应用以适配

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3623 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 11:04 · PVG 19:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.