在 AWS 负载均衡环境中使用 Classic ASP 会话变量有技巧吗?

Is there a trick to using Classic ASP session variables in an AWS load-balnced environment?

我有一个 AWS、负载平衡的 EC2 环境 运行 一个遗留的 ASP 网站。该应用程序使用会话变量来管理用户登录状态。

问题是,当环境扩展到 2 个或更多实例时,它并不总是有效。它时好时坏,有时变量在声明后不存在。对于这种类型的环境,我是否遗漏了什么?

当时,只有一个EC2实例。没事。更多,而且会话变量并不总是建立。

Session("loggedin")=true

如果您要存储用户会话 "in process",这意味着它存储在服务器的内存中 运行您的应用程序,您需要在负载平衡器上启用 "sticky sessions",以便每个用户都绑定到该特定服务器。否则,您 运行 会遇到负载均衡器将流量发送到不同服务器的问题,该服务器可能有也可能没有您正在寻找的会话数据。 (这是个坏主意,所以不要这样做,但这会解决你的问题)

由于粘性会话无法正确扩展,处理会话的正确方法是使用单独的服务或数据存储来处理用户会话数据。例如,您可以将用户会话存储在 Elasticache 或 DynamoDB 中,因此会话将在您的 EC2 实例之外读取,您可以继续添加(或删除)新的 EC2 实例而不会出现问题。您也可以使用数据库服务器来处理您的会话信息。关键是不要处理实际 EC2 实例上的会话数据。

看看这个:Using DynamoDB with Session