2009-12-07 32 views
1

當我將ASP.NET應用程序部署爲Web場時,需要注意哪些問題?ASP.NET在Web場中

+0

另請參見:http://serverfault.com/questions/91161/what-are-the-best-practices-in-web-farms –

回答

8

所有會話狀態信息都需要跨服務器進行復制。最簡單的方法是使用如所述的MSSQL會話狀態提供程序。

任何磁盤訪問(如用戶存儲的動態文件)都需要位於所有服務器可訪問的區域。比如通過使用某種形式的網絡連接存儲。腳本文件,圖像和HTML等只會在每臺服務器上覆制。

試圖在應用程序對象中存儲任何信息或在應用程序啓動時加載信息需要進行審查。每次用戶點擊農場中的新機器時,事件都會觸發。

各個服務器上的機器密鑰是非常大的,正如其他人所建議的。如果您針對IP地址而不是域使用SSL,您也可能會遇到問題。

您必須考慮您要實施的負載平衡策略,因爲這可能會改變您的方法。

+1

考慮讓SSL在負載均衡器中終止,然後向各個Web服務器發送純HTTP請求。像F5的BigIP或類似的平衡器支持這一點。 – devstuff

6

會話是一個很大的問題,請確保您使用SQL Server來管理會話,並且所有服務器都指向同一個SQL Server實例。

+4

+1但我會說:'狀態信息',只是爲了更多通用的;這個領域包括'Cache'和'Application'數據 –

+0

+1和魯本斯的好評 – LorenVS

+0

這是真的。 – Lloyd

5

我遇到的一個大問題是不同的機器鍵分佈在不同的服務器上。 ASP.NET使用machineKey進行各種加密操作,例如ViewState和FormsAuthentication標籤。如果你有不同的機器鍵,你最終可能會遇到服務器不理解來自其他服務器的帖子。如果您想了解更多信息,請點擊此處:http://msdn.microsoft.com/en-us/library/ms998288.aspx

+0

下面是一個工具鏈接,它會爲您生成密鑰http://aspnetresources.com/tools/keycreator.aspx – David

3
  1. 請勿使用會話,而應使用配置文件。您可以配置一個SQL羣集來提供它們。會話將頻繁地查詢您的會話數據庫的方式,而配置文件只是加載自己,就是這樣。
  2. 使用分佈式緩存店像memached緩存數據,以及ASP.Net緩存的東西,你需要很多
  3. 使用SAN或EMC提供給您的靜態內容
  4. 使用S3或類似的東西有在3
  5. 後備有一些體面的負載均衡器,讓您可以輕鬆每臺服務器更新,而沒有需要關閉網站