坚持使用 AWS 负载均衡器后面的相同目标

问题描述 投票:0回答:1

我有一个使用“粘性会话”的应用程序,由负载均衡器控制。作为会话的所有者,我希望能够共享链接以使其他用户/设备能够协作到同一会话。 有人建议我使用像 redis 这样的东西来在所有目标之间共享信息。然后,即使协作者会话被路由到不同的目标,应用程序仍然可以正常工作。在我看来,这违背了负载均衡器的目的,因为现在我们有另一个瓶颈,即 Pod 之间的通信。

理想情况下,我希望合作者能够坚持与所有者相同的目标。

这就是我想象的这个过程

所有者创建一个带有会话标识符的
    link
  1. 合作者要求
  2. GET ${link}
  3. 服务器检查使用请求中的会话标识符(访问例如redis、磁盘或数据库),然后在协作者会话中添加
  4. Set-Cookie
  5. ,这将导致该客户端的后续请求被路由到正确的目标.
  6. 这听起来像是
基于应用程序的粘性

的用例,但我应该在步骤 3 中做什么。

关键问题

如果我只是在其他请求中复制自动生成的cookie,即使来自不同的设备,是否也能保证到达相同的目标(在过期时间内)?
  1. 如果我切换到基于应用程序的粘性并为每个新会话给出
  2. UUID
  3. 是否会对负载平衡造成影响?
    如果我清除 cookie,例如与 
  4. Set-Cookie: LOAD_BALANCER_COOKIE=; Max-Age=0
  5. 它也会从负载均衡器“内存”中清除它,有什么方法告诉负载均衡器忘记会话?
    
        
amazon-web-services amazon-elb aws-application-load-balancer
1个回答
0
投票

无论如何回答你的关键问题:

1/ 和 2/:负载均衡器将使用 cookie 的内容路由到正确的目标,因此,是的,如果您与其他设备共享其值,请求将落在同一服务实例上。

3/:负载均衡器是无状态的,它不管理内存中的状态,而是将状态保存在 cookie 中。也许可以清除服务输出中的 cookie,技巧是负载均衡器在没有 cookie 的情况下管理新 cookie 的创建。

© www.soinside.com 2019 - 2024. All rights reserved.