7

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

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

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

有没有办法使服务器相互同步,或者我还能做些什么?

任何帮助,将不胜感激。

谢谢

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

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

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

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

4

6 回答 6

5

这是关于服务器故障的问题。
无论如何,我认为您绝对应该考虑进入“云”。将上传从一台服务器同步到另一台服务器根本不可靠——你不知道你会得到什么样的错误以及为什么会得到它们。此外,同步过程将加载两台服务器。对我来说,正确的解决方案是在云端。

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

  1. 用于rsync在服务器之间同步您需要的文件。
  2. 用于crontab每 X 分钟/小时/天同步文件。
  3. 在某些事件(用户登录等)时复制文件
于 2012-07-08T21:03:20.983 回答
4

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

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

因此,使用 NFS 共享服务器文件将起作用,或者

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

于 2012-07-08T21:03:14.753 回答
2

大多数网站通过使用第三方指定的文件服务器(如Amazon S3 )来解决此问题,以供用户上传。

于 2012-07-08T18:59:45.123 回答
2

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

看看这里


和这里

于 2013-10-15T12:39:57.937 回答
1

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

于 2014-01-15T12:37:50.297 回答
1

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

于 2012-07-08T19:30:11.997 回答