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

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

我們在 Netscaler 負載平衡器後面有多個 Web 伺服器。 (Win2008) 伺服器各自託管一個 ASP.Net 應用程式(使用 iis 6.1),該應用程式配置為使用運行 .Net StateServer 服務的中央伺服器進行會話狀態管理。

當我們將負載平衡器配置為使用「循環」或「最不繁忙」路由時,Web 應用程式會定期崩潰,並顯示錯誤,表示缺少其預期處於會話狀態的內容。然而,它並不總是這樣做——僅在某些步驟上,然後在大約 75% 的嘗試中這樣做。

當我們將負載平衡器配置為伺服器持久性(因此使用者「黏在」一台伺服器上)時,不會出現此問題。 (但這不是我們想要的運行模式)

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

  • 重新開始所有的事情
  • 所有伺服器上的機器金鑰都是相同的
  • Web 伺服器和狀態伺服器之間不存在連線問題
  • IIS 的網站名稱、路徑和 ID 在所有 Web 伺服器上都相同
  • 應用程式日誌中未記錄任何錯誤

有人對其他要檢查的事情/可能的原因有什麼建議嗎?

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

答案1

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

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

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

相關內容