Load Balancer cookie的粘性和用于存储用户会话的ElastiCache有什么区别?

时间:2019-11-01 08:28:46

标签: amazon-web-services amazon-ec2 amazon-elasticache

我听说过两种在Amazon AWS中存储用户会话的方法。一种方法是将Cookie的粘性与Load Balancer一起使用,另一种方法是将用户会话存储到ElastiCache。如果我想同时使用EC2负载平衡器和ElastiCache,有什么优缺点?我应该在哪里存储用户会话?

1 个答案:

答案 0 :(得分:1)

AWS LB粘性是另一回事,您不能以LB粘性存储东西,这是由AWS基础服务控制的。负载平衡器使用特殊的cookie来跟踪针对每个侦听器的每个请求的实例。负载均衡器收到请求后,首先检查该cookie是否存在于请求中。如果是这样,则将请求发送到cookie中指定的实例。如果没有cookie,则负载均衡器会根据现有的负载均衡算法选择一个实例。

  

您可以使用粘性会话功能(也称为会话   亲和力),这使负载均衡器可以将用户会话绑定到   一个特定的实例。这样可以确保来自用户的所有请求   在会话期间将被发送到同一实例。

LB粘性会话只将来自同一用户的后续请求路由到同一ec2实例,这将有助于WebSocket之类的应用程序。

lb-sticky-sessions

enter image description here

因此,如果您正在寻找一种管理和存储敏感数据的方法,并且该数据应该在多个节点之间都可用,那么您需要 Distributed Session Management使用Redis或Memcached。如果您只是将后续请求粘贴到同一EC2实例,那么LB粘性就足够了。

  

有许多方法可以管理Web应用程序中的用户会话,   从仅cookie到分布式键/值数据库,   包括服务器本地缓存。将会话数据存储在Web服务器中   响应给定的请求似乎很方便,因为访问   数据不会引起网络延迟。主要缺点是要求   必须仔细路由,以便每个用户与一个用户交互   服务器和一台服务器。另一个缺点是,一旦服务器   下降,所有会话数据也消失。分布式的   内存中的键/值数据库可以通过支付少量费用来解决这两个问题   网络延迟的代价。将所有会话数据存储在   饼干在大多数时间都足够好;如果您打算存储   敏感数据,那么最好使用服务器端会话。

building-fast-session-caching-with-amazon-elasticache-for-redis

enter image description here