跨多个服务器保持同步上传的文件 - PHP Linux

时间:2012-07-08 18:37:54

标签: php file synchronization

我现在有一个网站,目前正在使用2台服务器,一台应用服务器和一台数据库服务器,但是应用服务器上的负载正在增加,所以我们要添加第二台应用服务器。

我遇到的问题是网站有用户将文件上传到服务器。如何在两台服务器上获取上传的文件?

我不想将图像直接存储在数据库中,因为我们的应用程序已经是数据库密集型。

有没有办法让服务器彼此同步或者我还能做些什么?

任何帮助都将不胜感激。

由于

编辑:我正在为那些帮助我更多地理解这个问题的人添加以下链接:

Synchronize Files on Multiple ServersKeep Uploaded Files in Sync Across Multiple Servers - LAMP

对于所有阅读这篇文章,NFS似乎是2中的优势。

NFS会使文件保持同步,但您也可以在所有服务器上使用ftp to upload文件,但NFS看起来就像是要走的路。

6 个答案:

答案 0 :(得分:5)

这是针对serverfault的问题 无论如何,我认为你应该考虑进入“云”。 将上传从一台服务器同步到另一台服务器根本不可靠 - 您不知道可以获得哪种类型的错误以及为什么可以获取它们。同步过程也将加载两个服务器。对我来说,正确的解决方案是在云端。

如果你选择同步方法,你有几个解决方案:

  1. 使用rsync同步服务器之间所需的文件。
  2. 使用crontab每X分钟/小时/天同步文件。
  3. 根据某些事件(用户登录等)复制文件

答案 1 :(得分:4)

我从服务器故障中得到了这个答案:

在这种情况下,最合适的做法是将文件共享分解为自己的单独服务。如果您的网络可以让文件“一次(几乎)一次”,请不要复制文件。您可以通过NFS / CIFS或通过适当的存储协议(如iSCSI)执行此操作。在适当的目录中挂载为本地存储。根据网络性能和存储需求,这可能会在页面加载时间上添加几个不可检测的毫秒数。

因此,使用NFS共享服务器文件可以正常工作

如@kgb所述,您可以指定一个服务器来保存所有上传的文件并让其他服务器从中拉出(只需确保运行cron或其他东西来备份文件)

答案 2 :(得分:2)

大多数网站都使用第三方指定的文件服务器(如Amazon S3)来解决此问题。

答案 3 :(得分:2)

另一个答案可能是使用一个名为BTSync的软件,它非常易于安装和使用,并且可以让您轻松地将文件同步到您需要的任意数量的服务器上。它只需要3个终端命令即可安装,效率非常高。

Take a look here


and here

答案 4 :(得分:1)

您可以使用数据库服务器进行存储...不是在数据库中我的意思是,也有一个在那里运行的Web服务器。它不会大幅增加CPU负载,但需要更好的通道。

答案 5 :(得分:1)

你可以用rsync来做..人们建议使用nfs ..但这样你就会创建一个故障点......如果nfs服务器出现故障......你的服务器都被搞砸了...如果我是正确的我错