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

Memcached与AWS Classic Load Balancer配合异常问题求助

问题排查与解决思路

问题根源

  • Memcached是单机缓存服务,两台EC2上的Memcached各自维护独立的缓存数据,没有自动同步机制
  • 绑定CLB后,请求会被分发到不同实例:比如在实例A写入的缓存,当请求落到实例B时无法读取,直接导致缓存相关功能失效;仅单台实例时所有请求都走同一节点,缓存逻辑自然正常

可行解决方案

1. 改用分布式缓存(最优方案)

替换为AWS ElastiCache(兼容Memcached协议),所有EC2实例统一连接这个分布式缓存集群,缓存数据全局共享。代码层面仅需将Memcached的连接地址改为ElastiCache的端点,几乎无需修改业务逻辑。

2. 开启CLB会话粘性

在Classic Load Balancer中开启Cookie会话粘性,让同一用户的所有请求固定分发到同一台EC2实例:

  • 操作步骤:
    • 打开CLB控制台,选中目标负载均衡
    • 切换到「Stickiness」标签,启用「Enable load balancer generated cookie stickiness」
    • 根据业务需求设置Cookie过期时间
  • 注意:该方案仅为规避问题,无法实现缓存共享,且单实例故障时,用户请求切换到另一实例会丢失之前的缓存,容错性较差。

3. 自行搭建Memcached同步(不推荐)

使用第三方工具(如memcached-replicator)配置两台实例的缓存数据同步,但会大幅增加运维复杂度,还可能出现同步延迟导致的数据不一致问题,故障恢复成本高,一般不建议采用。


内容的提问来源于stack exchange,提问作者Dipak Panchal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:54:38