我希望能够在不失去客户端会话状态或导致任何停机的情况下部署我的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会将他们发送到之前所在的同一网站吗?
答案 0 :(得分:0)
这里有很多考虑因素
首先,您可能最好在基于StateServer or SQL的会话管理中存储ASP.NET会话,以允许Web客户端(或Web服务客户端)访问您的站点,而不是在您的NLB上使用亲和力。粘性'亲和力。一旦设置了StateServer或创建了SQL Session DB,就应该对应用程序的Web配置进行简单的更改。
NLB本身非常适合在升级网站时保持网站正常运行。在重新安装应用程序之前,您通常会停止群集中的服务器,对其进行测试,然后将其重新引入NLB群集,然后再使用下一个服务器等进行处理。
AFAIK,NLB Single Affinity在TCP / IP级别工作,不会询问ASP.NET会话。基本上从同一客户端IP到同一服务器IP的任何连接:端口组合将被定向到同一服务器。同样是AFAIK,两台服务器都将共享NLB IP(除了他们拥有的任何现有IP)。 由于您的网站似乎使用SSL,似乎除非您具有亲和力,否则每个请求上的SSL会话密钥都需要renegotiated,这可能会影响性能。