將 NFS 用於可擴展的 PHP/MySQL Web 應用程序
情況如下:
我有一個接受使用者上傳(pdf 文件)的 PHP/MySQL Web 應用程序。從這些 pdf 文件的頁面中,可以動態製作預覽圖像並呈現給 Web 應用程序的使用者。一些 pdf 文件可能偏大,大多數會低於 50 MB,但一些極端情況可能高達幾百 MB。稍稍等待大型 pdf 文件的預覽圖像是可以接受的,但不超過一分鐘。目前一切都在一台伺服器上執行,但很快該應用程序將達到伺服器在儲存和處理能力方面的限制。
我解決問題的想法:
為了應對這種情況,我想根據需要擁有一個或多個 pdf 處理伺服器,以及一個或多個文件儲存伺服器。這兩種類型的伺服器都安裝在使用 NFS 執行實際應用程序的伺服器上。然後,該應用程序可以使用 GearMan 將 pdf 處理任務委託給這些處理伺服器。處理伺服器可以掛載儲存伺服器並讀取儲存在其中的文件,對其進行處理並將其輸出寫入該伺服器。我所說的伺服器將是 amazon ec2 實例。
Web 應用程序返回一個指向儲存伺服器上生成的 pdf 預覽圖像的連結,然後可以在前端使用該連結向使用者顯示圖像。
我的問題:
我對使用多個伺服器的應用程序的經驗為零,這個想法可行還是有更好的方法?對於這種情況,NFS 設置是否足夠快速和可靠?
您的想法肯定是正確的,但根據我的經驗,虛擬機上的共享儲存很少有高性能,所以我懷疑在這種情況下我是否真的會走 NFS 路線。
最大的缺點是圍繞 EBS 上的 NFS 的單點故障,這可能很難緩解。在非虛擬數據中心中,我會使用集群 NAS 設備來處理故障轉移 NFS。在 EC2 上,我不確定該怎麼做。
如果您已經將 Amazon EC2 用於工作任務,那麼為什麼不將資產儲存在 S3 儲存桶中。性能好,桶可以從世界任何地方使用,使用 HTTP 訪問方法。
您需要做的就是上傳到 S3,讓工作人員抓取文件,對其進行處理,然後將生成的資產放回 S3。
您甚至可以在本地掛載 S3 儲存桶。https://stackoverflow.com/questions/10801158/how-stable-is-s3fs-to-mount-amazon-s3-as-a-local-directory
事實上,您可以更多地使用 Amazon 堆棧並使用他們的簡單消息服務來代替(或以及)gearman。