AWS 上的粘性会话有其他选择吗?

use*_*051 1 ajax amazon-web-services amazon-elb

我在经典负载均衡器上使用两个 ec2 实例。我的用户在分析过程中遇到 502 错误,尤其是在进行 ajax 调用时。换句话说,如果用户连接到一个服务器实例,则在使用程序过程中的 ajax 调用将定向到另一个服务器实例。这会导致该错误。我需要用户在他/她的会话期间定位到同一服务器实例。

在谷歌搜索上述问题后,我发现了这一点:

负载平衡、AJAX 和您

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html

根据这些文档,我应该将粘性会话应用于我的负载均衡器。但是,它要求客户在其浏览器上启用 cookie。我真的不想这样。

对于这个问题还有其他解决方案吗?我真的很感激任何建议。

Mar*_*cin 5

您面临的问题是因为您的应用程序是有状态的。在理想的负载平衡和自动缩放设置中,所有实例都应该是无状态的,这意味着将用户重定向到其他实例不会有任何问题。

为此,与用户会话相关的所有状态信息都应在实例外部存储和处理,例如在 DynamoDB 或 ElasticCache 中。这会增加更多成本并需要更改您的应用程序,但这正是您应该瞄准的目标,它允许您传递stateidurl,而不是 cookie。

遗憾的是,我认为如果没有负载均衡器 cookie 或应用程序级 cookie,您就无法实现您想要的目标。