2012-11-27 37 views
5

如何獲得回形針圖像上傳到上8個機(負載平衡)運行Rails應用程序工作嗎?回形針+導軌和負載平衡的機器

用戶可以上傳應用程序中的圖像。圖像存儲在其中一臺機器上。用戶稍後請求該圖像,但未找到該圖像,因爲該圖像是從另一臺機器請求的。

什麼是對這類問題的解決方法?我無法使用AWS或任何雲服務;圖像必須存儲在內部。

謝謝。

+0

如果您不能使用AWS,你就必須要麼把圖像在數據庫或自己的文件存儲解決方案。將它們存儲在您的應用程序服務器上是不可行的。如果你丟失了其中一臺機器,你就失去了圖像。 –

回答

8

一種解決方案是使用NFS掛載的共享文件夾,這將是根的public/system或任何你叫含曲別針的圖像文件夾。

有一些事情要考慮清楚,雖然一切工作:

  • 使用一個專用的服務器只會包含的資產,這樣一來你的硬盤驅動器(S)專用於滿足您的曲別針的圖像
  • NFS可能很昂貴。使用它將文件從應用程序服務器寫入您的資產服務器。您必須配置負載均衡器或反向代理或Web服務器才能直接從資產服務器檢索所有映像,而不要求應用程序服務器通過NFS執行。
  • 在您的資產服務器上推薦使用RAID系統
  • 推薦使用第二臺資產服務器,並且規格相同。您可以使其充當備份服務器,並定期對您的回形針圖像進行rsync同步。如果主資產服務器發生故障,您可以切換到該資產服務器。
  • 當安裝共享NFS文件夾,使用soft選項,並通過安裝一個高速局域網連接,例如:mount -o soft 10.0.0.1:/export/shared_image_folder。如果您未指定soft選項,並且資產服務器關閉,則您的Ruby實例將一直等待服務器上升。一切都會被卡住,網站將會向下看。瞭解到這一個難題...

這些都是使用NFS的一般準則。我在一個相當大的製作網站上使用它,上面有成千上萬的圖像,它對我來說工作得很好。

+0

如何指示Paperclip將文件寫入共享掛載文件夾,例如machine1? – alste

+0

您必須「掛載」共享的NFS文件夾。在Linux中,'mount'將嘗試使用NFS來掛載網絡文件夾,將編輯我的答案。當然,你必須先安裝你的nfs服務器,並根據你的發行版安裝所需的軟件包, –