2009-02-16 57 views
1

我有超過10個運行IIS的Web服務器的負載平衡環境。所有網站正在訪問一個存放所有圖片的單個文件存儲。我們目前有200GB的圖片 - 我們將它們存儲在每個目錄1000張圖片的目錄中。現在,所有圖像都位於單個存儲設備(RAID 10)中,並連接到用作文件服務器的單個服務器。所有Web服務器都連接到同一局域網上的文件服務器。 我期待改進架構,以便我們不會有單點故障。 我正在考慮兩種選擇:負載均衡環境中的圖像

  1. 複製的文件存儲到所有的Web服務器,使它們都訪問本地
  2. 將數據複製的文件存儲到另一個存儲,所以如果出了事,我們將當前存儲能夠切換到它。

很明顯,在文件存儲上完成的主要操作被讀取,但也有很多寫操作。你認爲什麼是首選方法?任何其他想法?

我目前正在排除CDN的使用,因爲它將需要對應用程序進行體系結構更改,而我們現在還不能對其進行修改。

+0

與編程無關 – AnthonyWJones 2009-02-16 12:36:59

回答

0

有些東西我會纔去拱變化,通常考慮的是

  1. 什麼是當前拱的問題
  2. 我在做什麼毛病當前牌坊。(如果已經工作了而小的調整通常會解決很多問題)
  3. 它會讓我容易成長(這裏總會有一個上限)。根據過去數據的增長,您可以有效地進行規劃。
  4. 可靠性
  5. 易於維護/監控/解決
  6. 成本

200GB不是大量的數據,你可以去爲一些家庭長大的溶液或使用像一個NAS,其將允許您稍後擴展。並有一個熱插拔它的複製品。

複製到所有的web服務器的存儲是一個非常昂貴的設置,如你所說有很多的寫操作,它將有一個大的開銷複製到所有的服務器(這隻會增加數量服務器和數據增長)。還有一個其他節點正在服務的陳舊數據的問題。除此之外,疑難解答覆制問題將與10個不斷增長的節點相混淆。 除非查找/讀取/寫入文件非常重要,否則複製到所有Web服務器並不是一個好主意。用戶(web)幾乎不會注意到100ms - 200ms的加載時間的差異。

0

這種東西有一些enterprisesolutions。但我不懷疑他們是昂貴的。 NAS不能很好地擴展。而且你有一個單一的失敗點並不好。

有一些方法可以編寫代碼來幫助解決這個問題。您可以在第一次請求Web服務器時緩存圖像,這將減少圖像服務器上的負載。

您可以設置一個主從設備,以便您擁有一臺主映像服務器,但其他服務器將從此複製。你可以負載均衡這些,並在你的代碼中加入一些邏輯,這樣如果一個從設備沒有圖像副本,你可以檢查主設備。您也可以按優先級順序分配這些參數,以便在主站不可用時,第一個從站成爲主站。

0

由於您的存儲空間中的數據非常少,因此購買多個大型HD或使用Web服務器上的可用空間保留副本是合理的。它將減輕後端存儲系統的壓力,當它失敗時,您仍然可以爲用戶提供內容。更妙的是,如果你需要擴展(更多的下載),你可以簡單地添加一個新的服務器,而且後端的壓力也不會改變。

如果我必須這樣做,我會使用rsyncunison將映像文件複製到存儲設備上的Web服務器的完全相同的空間中(這樣,您可以將副本替換爲任何時候都可以掛載網絡文件系統)。

不時地運行rsync(例如,在任何上傳之後或在夜晚進行一次;您會更好地知道哪種尺寸最適合您)。

更通用的解決方案是使用像Bittorreent這樣的P2P協議。這樣,您可以將存儲後端上的所有更改發佈到Web服務器,並自動優化更新。