除了 AWS 上的粘性会话之外,还有其他选择吗?

Is there any alternative to sticky sessions on AWS?

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

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

Load Balancing, AJAX, and You

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

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

这个问题还有其他解决办法吗?我真的很感激任何建议。

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

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

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