繁体   English   中英

ASP.Net - 在负载平衡环境中处理会话数据?

[英]ASP.Net - Handling session data in a load balanced environment?

ASP.Net如何在负载平衡环境中处理会话数据? 假设用户在浏览几页时会发出多个请求? 是否所有请求都转到负载均衡器中的同一台服务器?

如果他们并非都指向同一台服务器,我该怎么办? 我该如何处理会话数据?

您需要确保您的NLB能够启用“粘性”会话。

如果这不是一个选项,那么您需要查看使用ASP.Net会话模式来配置会话服务器或某些后备存储,如SQL Server。

通常,大多数负载均衡器尝试持久连接,但出于您的目的,您无法保证它。 您最好使用类似SQL后端的东西来维护状态或创建一个单独的类来管理会话数据。 在任何一种情况下,您都可以重建会话数据,如果它恰好是您想要的其他时间。 我倾向于使用getter来检查null并在必要时重建。 在实践中,我没有做任何指标,看看它重建的频率,但我猜不常。 正如他们所说,最好是安全而不是抱歉。

负载均衡器通常可以配置基础设施人员称为sticky sessionsticky bit 在这种类型的环境中,一旦将请求分配给服务器; 它在整个会话期间与该服务器保持一致。

如果未以这种方式配置Load Balancers,ASP.NET将提供多个会话状态提供程序。 一个非常流行的是SQL Server State Provider ,它允许将会话信息存储在数据库中。 为了使其工作,放置在Session对象中的所有对象必须是Serializable,以便它们可以存储在表中。

正如我所说,还有其他几种选择; 例如,有些人喜欢使用不同的方法,例如memcached或类似的产品。

您可以使用Windows中的NLB或其他产品,如BIG-IP F5,HA代理,有很多选项。

使用Out-of-Proc(状态服务器)并确保所有服务器上的machinekey设置相同。 还要确保在共享磁盘驱动器(如NAS)上执行IO。

这是一个链接,其中包含一些提示: 负载平衡和ASP.NET

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM