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


Keep Uploaded Files in Sync Across Multiple Servers - PHP Linux

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

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

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

有没有一种方法可以使服务器相互同步,或者我还能做些什么?

如有任何帮助,我们将不胜感激。

感谢

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

同步多台服务器上的文件和保持上传的文件在多个服务器之间同步-LAMP

对于所有阅读这篇文章的人来说,NFS似乎是2中更好的。

NFS将保持文件同步,但您也可以使用ftp在所有服务器上上传文件,但NFS看起来是可行的

这是服务器故障的问题
不管怎样,我认为你绝对应该考虑进入"云端"。将上传内容从一台服务器同步到另一台服务器根本不可靠——你不知道会出现什么样的错误,也不知道为什么会出现错误。此外,同步过程将加载两台服务器。对我来说,正确的解决方案是在云端进行。

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

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

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

在这种情况下,最合适的做法是将文件共享拆分为自己的单独服务。如果您的网络可以让文件"一次放在所有地方(几乎)",请不要复制文件。您可以通过NFS/CIFS或iSCSI等适当的存储协议来做到这一点。作为本地存储装载到相应的目录中。根据网络性能和存储需求,这可能会使页面加载时间增加几毫秒,无法检测

因此,使用NFS共享服务器文件或是可行的

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

大多数网站都通过使用第三方指定的文件服务器(如AmazonS3)来解决这个问题。

另一个答案是使用一款名为BTSync的软件,它非常易于安装和使用,可以让你轻松地在需要的服务器上保持文件同步。只需3个终端命令即可安装,而且非常高效。

看看这里


此处

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

您可以使用rsync来完成。。人们建议使用nfs。。但这样你就造成了一个失败点。。。如果nfs服务器出现故障。。你的两台服务器都坏了。。。如果我的错误,请纠正我