负载均衡服务器的文件上传最佳解决方案

Posted

技术标签:

【中文标题】负载均衡服务器的文件上传最佳解决方案【英文标题】:File upload best solution for load balanced servers 【发布时间】:2011-07-27 09:45:56 【问题描述】:

我有 2 个网络服务器负载平衡,连接到 1 个 mysql 服务器。服务器上 php 应用程序的一项功能允许用户上传必须可从任一 Web 服务器访问的图片。这样做的最佳解决方案是什么?

上传图片到云端? 将图片存入数据库 将图片上传到 MySQL 服务器(不是数据库,文件系统) ... ?

感谢您的建议。

【问题讨论】:

【参考方案1】:

上面的 Rsync 可以工作,但是如果你在 wordpress 平台上运行一个高流量的网站,上传的图片数量很快就会变得太多,rsync 无法在目录树中遍历,你首先会看到 rsync 也会变慢在校验和部分进行爬网,然后它将停止工作,就像您在包含太多文件的目录中执行 ls 时一样。但在您遇到这些问题之前,这是最好的解决方案。

另一种解决方案是远程安装的 nfs 分区,但除非您处于真正受信任的环境中,否则这是非常不安全的。

另一种解决方案是立即将文件“放置”到 Amazon S3 上,然后将 URL 链接存储在您的数据库中,然后在页面加载时呈现。

不要将图片存储在数据库中 - 这确实会减慢 db 表的速度。

【讨论】:

【参考方案2】:

使用 GlusterFS(一种复制文件系统)和用于云存储的 Amazon S3 都取得了非常好的结果。

【讨论】:

【参考方案3】:

我建议上传到文件系统上的文件夹。然后定期运行 cron 作业,以 rsync 是两台服务器之间的文件夹。您还可以在图像上传过程中运行 rsync。在数据库中存储图像可能会变得很复杂,并且会使您的数据库膨胀。

【讨论】:

以上是关于负载均衡服务器的文件上传最佳解决方案的主要内容,如果未能解决你的问题,请参考以下文章

文件存储方案 FastDFS

HAProxy负载均衡与最佳实践(中)

CDN/地理负载均衡

阿里云SLB最佳实践

FastDFS

负载均衡方案对比表