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