You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS ALB粘性会话在ECS容器重新部署后失效问题咨询

问题分析与解决方案

核心原因

你遇到的现象和AWS文档描述不符,本质是两种场景的逻辑差异:

  • AWS文档描述的是目标故障/不健康但仍保留在目标组内的情况,此时ALB会自动将会话重新绑定到新的健康目标,更新AWSALBAPP-* Cookie的值。
  • 而你的场景是旧容器被完全移除出目标组(部署销毁),此时ALB中sessionid与旧目标的映射关系彻底消失,ALB会返回AWSALBAPP-0=_remove_来清除失效的关联,后续请求就会回到轮询模式。

基于应用Cookie的粘性会话逻辑是:ALB会维护一张「应用Cookie值(你的sessionid)→ 后端目标」的映射表。当映射表中的目标被移除,ALB无法找到对应绑定,就会触发移除标记,不再维持粘性。

解决办法

  • 采用滚动更新策略:部署ECS服务时配置滚动更新,确保新容器被标记为健康后,再逐步销毁旧容器。旧目标在目标组内存续期间,ALB会自动将sessionid的映射转移到新目标,不会触发_remove_标记,会话粘性平滑过渡。
  • 切换为ALB生成Cookie的粘性模式:放弃基于应用Cookie的粘性,改用ALB自带的「持续时间型粘性会话」。这种模式下ALB生成自己的粘性Cookie(AWSALB/AWSALBCORS),独立维护会话与目标的绑定,旧目标被移除时会自动重新绑定新健康目标,不会出现_remove_的情况。
  • 外部化Session存储:将Django的Session存储从容器本地迁移到外部服务(如Redis、DynamoDB),同时在部署后让Django保持Session数据一致性,配合ALB重新建立粘性关联。不过该方案需要修改应用代码,效率不如前两种直接。

内容的提问来源于stack exchange,提问作者Paul C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 23:17:32