首页 > 解决方案 > Node.Js Express 应用程序在负载均衡器后面的 AWS ECS 上运行时不允许登录

问题描述

我有一个 Node.Js 应用程序在负载均衡器后面的 AWS ECS 集群上运行。它通过亚马逊提供的公共 DNS 面向互联网。

在应用程序内部有一个基于护照/快递的用户登录功能。

当我将它作为 1 个任务启动时,就可以为用户登录。

当我将它作为一个以上的任务启动时,当它登录时(我可以在日志中看到它),它直接不会通过其他功能并注销。

这里可能是什么问题?

标签: node.jsexpresspassport.jsamazon-ecsaws-load-balancer

解决方案


似乎sticky session未启用,因此请求随机分布在两个不同的任务中,并且用户不存在会话。

粘性会话

粘性会话是一种将请求路由到目标组中相同目标的机制。这对于维护状态信息以便为客户端提供持续体验的服务器很有用。要使用粘性会话,客户端必须支持 cookie。

您可以在 LB 下的负载均衡器中启用粘性会话 attributes

负载均衡器目标组粘性会话


推荐阅读