ruby-on-rails - 带有负载平衡机的回形针 + rails

标签 ruby-on-rails image paperclip scalability

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

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

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

谢谢。

最佳答案

一种解决方案是使用 NFS 挂载一个共享文件夹,该文件夹将成为您 public/system 的根目录。或任何您称之为包含回形针图像的文件夹。

不过,要使一切正常工作,需要考虑一些事项:

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

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

    关于ruby-on-rails - 带有负载平衡机的回形针 + rails ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13594161/

    相关文章:

    java - 带有图像的 fillRect 方法

    ruby-on-rails - Rails Paper Clip 上传不起作用...没有抛出错误,回滚事务

    ruby-on-rails - Rails Paperclip 多态样式

    javascript - 如何将 base64 编码的文件提交给回形针?

    ruby-on-rails - Rails 生产路线问题

    ruby-on-rails - 设置caches_action,:expires_in => dynamically

    python - 在 python 中使用 cv2.approxPolyDP() 绘制轮廓

    PHP自定义明信片

    jquery - 如何将remote_function替换为某些jquery调用

    MySQL:删除连续的重复值