带有负载平衡机的Paperclip + Rails

als*_*ste 5 scalability ruby-on-rails image paperclip

如何在8台计算机上运行的Rails应用程序(负载平衡)上运行Paperclip图像上传?

用户可以在应用程序上上传图像.图像存储在其中一台机器上.用户稍后请求图像,但是找不到图像,因为它是从另一台机器请求的.

这类问题的解决方法是什么?我无法使用AWS或任何云服务; 图像必须存储在内部.

谢谢.

Ant*_*rto 8

一种解决方案是使用NFS来安装共享文件夹,该文件夹将是您public/system或您称为包含回形针图像的文件夹的根.

有一些事情需要考虑,以使一切工作:

  • 使用仅包含资产的专用服务器,这样您的硬盘驱动器专用于提供回形针图像
  • NFS可能很昂贵.使用它将文件从App服务器写入资产服务器.您必须配置负载均衡器或反向代理或Web服务器以直接从资产服务器检索所有映像,而无需请求应用程序服务器通过NFS执行此操作.
  • 当然,建议在资产服务器上使用RAID系统
  • 建议使用第二个资产服务器,具有相同的规格.您可以将其充当备份服务器,并定期将回形针图像与其同步.如果主资产服务器出现故障,您将能够切换到此资产服务器.
  • 安装共享NFS文件夹时,请使用该soft选项,并通过高速本地网络连接进行安装,例如:mount -o soft 10.0.0.1:/export/shared_image_folder.如果您没有指定该soft选项,并且资产服务器出现故障,那么您的Ruby实例将继续等待服务器上升.一切都会被卡住,网站会向下看.用艰难的方式了解了这一点......

这是使用NFS的一般准则.我在一个拥有数十万张图片的大型制作网站上使用它,它对我来说很好用.