2012-04-24 57 views
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。這是否合適?有一個更簡單,更簡單的方法嗎?

NLB如何知道客戶端X的請求已在A或B上有會話? IE瀏覽器。當他們註銷網站並嘗試再次登錄時,nlb會將它們發送到他們之前所在的網站上嗎?

回答

0

有相當多的因素在這裏

首先,而不是玩弄你的NLB親和力,你可能會得到更好的保存您的ASP.NET會話中StateServer or 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會話密鑰需要爲renegotiated,這可能會影響性能。