Rainbond 最佳实践: Tomcat 配置 Redis 实现 Session 共享 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Igotyouinmysight
V2EX    分享发现

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

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

    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     Solana     936 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 22:14 PVG 06:14 LAX 14:14 JFK 17:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86