Apache-2.2

需要有關執行 Apache+PHP 的網路伺服器集群的 R/W 分佈式文件系統的建議

  • August 19, 2013

在過去的幾個月裡,我一直在嘗試找到在多個執行 Apache+PHP 的多個 Web 伺服器 (12+) 上共享多個網站的內容的最佳方式。我面臨的最大挑戰之一是我們需要能夠隨時讀取寫入文件系統,出於各種好的和壞的原因(即應用程序不受我們控制,通過 Web 界面管理的 wordpress 站點等…)。

以下是我嘗試過的一些事情,結果證明:

  • Rsync/duplicity/csync2:每分鐘只執行一次,這意味著某些更改不會足夠快地在集群中共享,以防止出現大問題。
  • inotify/incron:考慮到要監控的大量文件和目錄,太複雜了。此外,它不適用於新文件。
  • GlusterFS:我們有一個 4 台伺服器的 gluster 後端,雖然性能確實很慢,但還是可以忍受的。不幸的是,執行在每個 Web 伺服器上的 gluster 客戶端不斷崩潰,然後凍結 4 個文件伺服器中的一個,持續 2 到 15 分鐘。我們聯繫了 Gluster Inc. 讓他們的一些工程師幫助我們,但他們無法找出問題所在。我們不得不在使用 3 個月後放棄。

有關我們設置的一般資訊:

  • 託管在 Amazon EC2 上
  • 執行 Ubuntu Maverick
  • 執行 Nginx (2) -> Varnish (2) -> Apache (12+)
  • .htaccess 被禁用以獲得最佳性能。我們將指令直接添加到站點配置文件中
  • 我們執行的大多數網站/應用程序都不是我們的,不幸的是,只讀環境是不可能的
  • 考慮到這些 Web 伺服器正在處理的任務,具有自動故障轉移的高可用性對我們來說非常重要

所以我認為這涵蓋了一切:)。提前感謝您的時間和回复。

這裡的“最差”(TM) 選項是 NFS。我知道那很難下嚥。我試著用 rsync 來避免它,我試著用 GFS 來避免它,我試著用 incron/inotify 來避免它。我試圖通過推動開發人員停止使用文件系統作為數據儲存來避免這種情況。最後,我們真的沒有比 NFS 更好的選擇了。不是因為 NFS 好,正如你所說的它的 HA 部分很粗糙,而是因為真的沒有更好的選擇。

它在技術上仍然是“測試版”,但我認為 Bittorrent Sync 對你來說是完美的。我沒有這樣的環境(多個網路伺服器),所以我自己沒有嘗試過,但聽說其他人正在這樣做並且非常高興。我確實將它用於分佈式伺服器備份,從技術角度來看這是一個類似的用途:http ://wandin.net/dotclear/index.php?post/2013/07/17/Distributed-server-backups-with-btsync

http://labs.bittorrent.com/experiments/sync.html

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