【问题标题】:IIS 7.5 Load Balancing--do Sessions stick to the originating server?IIS 7.5 负载平衡——会话是否坚持到原始服务器?
【发布时间】:2015-02-27 17:02:58
【问题描述】:

如果这里已经有答案,我深表歉意,但我查看了超过 2 打的主题,但找不到具体答案。

因此,对于我们的 ASP.NET (2.0) 应用程序,我们的基础架构团队设置了一台负载平衡器计算机,该计算机具有两个 IIS 7.5 服务器。 我们有一个网络文件服务器,应用程序文件的单个副本驻留在其中。我对负载平衡甚至 IIS 的内部工作原理知之甚少。

我的问题是关于会话的。我想我想知道“平衡”部分是基于会话还是基于单个页面请求。

例如,当用户第一次登录站点时,他已通过身份验证(表单),但是当他从一个页面导航到另一个页面时,IIS 7.5 是否会自动将他“锁定”到第一次登录的特定服务器他进入并对其进行身份验证,或者他的页面请求是否可以从一个服务器交替到下一个服务器?

如果请求确实交替出现,我可能会遇到什么问题?我读过一些关于复制 MachineKey 的文章,但我们在 web.config 中没有做任何关于 MachineKey 的事情——它根本不存在。

我要补充一点,我们在身份验证、会话对象等方面没有遇到任何问题(无论如何我们都知道) - 该网站运行良好,问题更具学术性,我只是想确保我我不会错过可能会在路上咬我的东西。

谢谢, 吉姆

【问题讨论】:

标签: asp.net iis-7.5 load-balancing


【解决方案1】:

当他从一个页面导航到另一个页面时,IIS 7.5 是否会自动将他“锁定”到首先让他登录并对其进行身份验证的特定服务器

这取决于负载平衡器的配置,超出了单个 IIS 的范围。由于您没有提供有关您使用的实际平衡器的任何信息,因此我只能提供一般信息 - 无论平衡器类型(硬件、软件)如何,它都可以配置为所谓的“粘性会话”。在这种模式下,您可以保证一旦浏览器与您的集群建立连接,它将始终访问同一台服务器。有两个示例技术 - 首先,平衡器只是创建从源 IP 地址到集群节点号的虚拟映射(这意味着来自同一 IP 的多个请求命中同一服务器),其次 - 平衡器附加一个额外的 HTTP cookie /header 允许它识别同一个客户端并将其定向到同一个节点。

请注意,术语“会话”与您拥有每个用户容器的服务器端“会话”无关。这里的会话是指“客户端会话”,一个操作系统上的一个浏览器,以及一系列从它到您的服务器的请求-回复。

如果请求确实交替出现,我可能会遇到什么问题

多个问题。首先,如果依赖机器密钥,加密将不起作用。这意味着即使是表单 cookie 也会被集群节点拒绝,而不是发出 cookie 的节点。一种解决方案是在所有节点上使用相同的机器密钥。

另一个常见问题是 inproc 会话提供程序 - 存储在一个应用程序服务器内存中的任何数据都不会“神奇地”出现在其他集群节点上,从而使会话数据不可用。一种解决方案是将会话配置为存储在单独的进程中,例如存储在 sql server 数据库中。

我要补充一点,我们没有遇到任何关于身份验证、会话对象的问题(我们无论如何都知道)

听起来很巧合,或者基础架构团队已经配置了粘性会话。后者听起来可能,配置通常是显而易见的和容易的。

【讨论】:

  • 感谢@Wiktor,抱歉耽搁了。这一切都说得通。我已经阅读了有关机器密钥匹配的信息——我是否正确地假设只要它在 web.config 中,我只会影响我的应用程序,即共享同一服务器的其他应用程序的机器密钥可以不同?跨度>
  • 是的。键可以而且应该不同。
猜你喜欢
  • 2020-10-29
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多