我开始在azure 上使用node.js 开发一个应用程序。我使用 everyauth 来提供身份验证,因为我想支持许多不同的身份验证方法。我计划部署到 Azure。我遇到的潜在问题是 everyauth 需要 connect.session 帮助程序。运行多个实例时,这可以与 azure 一起使用吗?或者我需要替代会话提供商吗?
我从未在 Azure 上使用过 Node.js,但是:
查看
everyauth
的文档,有一种针对 Windows Azure ACS 进行身份验证的方法。请参阅 自述文件中标题为
Setting up Windows Azure Access Control Service (ACS) Auth
的部分了解更多信息。那里没有关于它不能在 Azure 本身上工作的注释,因此我可以推断您可以在 Azure 上使用它。
还有一个名为 connect-azure 的项目,它似乎正在使用
connect.session
,所以我再次从中推断它可以在 Azure 上运行。
如果您已经是客户,您可以联系支持人员寻求帮助。
因此,如果您有 Azure 环境设置,我肯定会说值得尝试一下。
这是不久前被问到的,但我想我无论如何都会尝试回答。看来connect-session依赖cookie来维持会话。根据您的使用情况,Azure 有不同的负载平衡策略:
WebRole/WorkerRole - LB 没有任何关联性,因此来自客户端的请求可能最终到达不同的后端实例。这将导致会话管理连接正在执行的任何操作都停止。这是分布式云架构的副作用:您不希望任何后端节点成为事实来源,因为它可能会宕机。因此,您需要做的是弄清楚如何外部化 connect 的 cookie 存储并让所有后端共享它。这样无论哪个后端收到请求,它都会知道会话。
网站 - 在这种情况下,LB will 实际上会尝试将客户端连接固定到给定的后端实例,因此基于 cookie 的会话可以在不进行任何更改的情况下工作。如上所述,您正在牺牲故障转移。