Load-Balancing

使用狀態伺服器的問題負載平衡 .Net Web 應用程序

  • May 14, 2014

我們在 Netscaler 負載均衡器後面有多個 Web 伺服器。每個 (Win2008) 伺服器都託管一個 ASP.Net 應用程序(使用 iis 6.1),這些應用程序配置為使用執行 .Net StateServer 服務的中央伺服器進行會話狀態管理。

當我們將負載均衡器配置為使用“循環”或“最不忙”路由時,Web 應用程序經常崩潰並出現錯誤,表明它預期處於會話狀態的某些內容失去了。然而,它並不是一直都這樣做——僅在某些步驟上,然後在大約 75% 的嘗試中。

當我們將負載平衡器配置為伺服器持久性(因此使用者“堅持”在一台伺服器上)時,不會發生此問題。(但這不是我們想要的執行模式)

我們已經檢查/完成的事情:

  • 重啟所有東西
  • 所有伺服器上的機器密鑰都相同
  • Web 伺服器和狀態伺服器之間沒有連接問題
  • IIS 是站點名稱、路徑和 ID 在所有 Web 伺服器上都相同
  • 應用程序日誌中沒有記錄錯誤

有沒有人對其他事情有任何建議來檢查/可能的原因?

注意。我們在另一個環境中進行了完全相同的設置——相同類型的負載均衡器、相同的 Web 應用程序、相同的配置、相同的伺服器設置……而且工作正常。唯一的區別是不同版本的 VMWare 工具,但看不出這是原因嗎?

幾個月後,我們找到了原因。一些(但不是全部)伺服器已升級到較新版本的 .Net Framework。

Microsoft 不支持使用具有不同版本框架的相同 StateServer 的不同伺服器,因此當客戶在具有 4.5.1 的伺服器和具有早期版本的伺服器之間跳轉時,他們基本上失去了會話並且應用程序崩潰了。

如果您遇到此問題,我建議您檢查每台伺服器上安裝了哪個框架- 它們必須全部相同才能使用相同的 StateServer。

引用自:https://serverfault.com/questions/564142