除了 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,我认为您无法实现您想要的。
我在经典负载均衡器上使用两个 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,我认为您无法实现您想要的。