0

我希望能够在不丢失客户端会话状态或导致任何停机的情况下部署我的 asp.net/mvc 网站的新版本。我正在考虑实现这一点的方法是创建一个 Windows 网络负载平衡服务器,以便客户端可以通过单个 url(例如https://mysite.org/ )访问它。然后它将流量重定向到其他两个站点之一(A.mysite.org 或 B.mysite.org)。我将 NLB 的关联设置为 Single,并禁用站点 B,以便将所有会话定向到站点 A。当我需要部署网站的新版本时,我将部署到站点 B,启用站点 B,然后禁用站点 A。因此,站点 A 上的每个人都可以留在那里(使用版本 1)直到他们注销。所有新会话都将连接到站点 B 并运行版本 2。下次部署时,我将执行相反的操作。

我从来没有用过NLB。这合适吗?有没有更简单、更简单的方法?

NLB 如何知道来自客户端 X 的请求何时已经在 A 或 B 上进行了会话?IE。当他们注销网站并尝试再次登录时,nlb 会将他们发送到他们之前访问的同一站点吗?

4

1 回答 1

0

这里有很多考虑

首先,与其在 NLB 上处理关联,不如将 ASP.NET 会话存储在StateServer 或基于 SQL的会话管理中,以允许 Web 客户端(或 Web 服务客户端)在没有“粘性”关联的情况下访问您的站点。一旦设置了 StateServer 或创建了 SQL Session DB,就应该对应用程序的 Web 配置进行简单的更改。

NLB 本身非常适合在您升级网站时保持网站正常运行。您通常会在重新安装应用程序之前停止集群中的服务器,对其进行测试,然后将其带回 NLB 集群,然后再对下一个服务器重复该过程等。

AFAIK,NLB Single Affinity在 TCP/IP 级别工作,不询问 ASP.NET 会话。基本上,从同一客户端 IP 到同一服务器 IP:端口组合的任何连接都将定向到同一服务器。同样 AFAIK,两台服务器都将共享 NLB IP(除了它们拥有的任何现有 IP)。由于您的站点似乎使用 SSL,除非您具有亲和力,否则似乎需要在每个请求上重新协商SSL 会话密钥,这可能会对性能产生影响。

于 2012-04-24T19:34:28.903 回答