我有一个运行旧版 ASP 网站的 AWS、负载均衡 EC2 环境。应用程序使用 session 变量来管理用户登录状态。
问题是,当环境扩展到 2 个或更多实例时,它并不总是有效。它时好时坏,有时变量在声明后并不存在。对于这种环境,我是否缺少一些东西?
当只有一个 EC2 实例时。没事。更多,并且 session 变量并不总是建立。
Session("loggedin")=true
最佳答案
如果您“正在处理”存储用户 session ,这意味着它存储在运行应用程序的服务器的内存中,则需要在负载均衡器上启用“粘性 session ”,以便每个用户都绑定(bind)到该特定服务器。否则,您会遇到这样的问题:负载均衡器将流量发送到另一台服务器,该服务器可能有也可能没有您正在查找的 session 数据。 (这是一个坏主意,所以不要这样做,但这会解决您的问题)
由于粘性 session 无法正确扩展,处理 session 的正确方法是使用单独的服务或数据存储来处理用户 session 数据。例如,您可以将用户 session 存储在 Elasticache 或 DynamoDB 中,因此 session 将在 EC2 实异常(exception)部读取,并且您可以继续添加(或删除)新的 EC2 实例,不会出现任何问题。您还可以使用数据库服务器来处理 session 信息。关键是不要在实际的 EC2 实例上处理 session 数据。
关于amazon-web-services - 在 AWS 负载均衡环境中使用经典 ASP session 变量是否有技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814503/