2011-08-22 63 views
4

我們正在努力建立負載均衡通過防火牆我們的網站。我們將有兩個Web服務器,即ws1和ws2,它們都使用進程內會話運行相同的Web應用程序。asp.net服務器負載均衡設置 - 它如何影響會議

我的問題是,如果有人訪問我們的網站,目前擁有WS1一個會話,防火牆切換他們WS2,這將給他們WS2的一個新的會話。我的問題是,如果他們切換回WS1,而他們的原始會話還沒有過期,他們將得到一個新的會話,或將瀏覽器仍然有其舊的會話標識,並帶回他們的老會話?

+0

不是100%肯定,但我認爲? – Tim

回答

4

當使用過程中的會話,兩個服務器將是完全不知道彼此的。您的用戶可能會切換並丟失會話,然後再切換回來,並恢復其舊會話。這不會爲你和你的用戶帶來悲傷:取決於你對會話的依賴程度,事情會隨機消失並重新出現。

你需要尋找到Session State Providers,這將讓你使用一個公用存儲您的會話數據。典型的選擇是將會話存儲在SQL Server中,因爲您可能已經在兩臺服務器之間共享該會話。如果您不使用SQL Server,則可能需要爲數據庫編寫自己的提供程序或找到由第三方創建的提供程序。 (這裏的悖論是,現在你的SQL Server需要負載平衡/高可用性,現在你只是轉移了這個問題。)

如果這不是一個選項,你的防火牆可能支持「session affinity」或「粘性會話」,它將使用某種狀態檢查來跟蹤會話,並確保一旦會話啓動,來自該會話的流量就會被定向到僅一臺服務器。然而,這被認爲是一個混亂,不應該依賴。在負載平衡的情況是最好使用一箇中央存儲的會話(如數據庫)使用會話時