2012-11-27 103 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服务器,并根据你的发行版安装所需的软件包, –