![Web 服务器之间的文件同步](https://linux22.com/image/563963/Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8C%E6%AD%A5.png)
我和一个朋友有两台服务器(linux/gentoo)——都有 ADSL 连接(16Mbit/s 下载 - 512Kb/s 上传)并且它们位于几百公里之外。
由于我们的上传带宽远远达不到现在的要求,我们认为对它们进行同步和负载平衡是一个好主意。
我们提供 MediaWiki 和 Wordpress 服务,使用 mysql 副本来复制数据库,使用 lsync(基于 git)来同步文件,并且我们的 DNS 服务器解析两个 IP 地址。
它已经运行了几天了,我们刚刚开始遇到同步问题——一些文件应该在他的服务器中但却不在他的服务器中,而一些文件无缘无故地从我的服务器中被删除了;
我们考虑了 DRDB,它在较低级别同步文件(DRDB 不会同步目录中的文件更改;我们必须在两侧都有一个新的分区,并且 DRDB 将同步它们的块 - 这似乎更加稳定)。
但是有一个缺点 - 据我们了解,DRDB 似乎无法扩展 - 这是必须的,因为我们计划在未来拥有更多的服务器。
我的问题是:
1)是否可以让 lsync 无缝工作,还是只是这样?
2)有没有办法让 DRDB 可扩展?(即使这是一种解决方法)
3) 您认为什么最适合我的情况?
答案1
像 DRBD 这样的集群文件系统解决了一些问题,但也引发了许多新问题。
我建议你使用NFS。拥有“单一事实来源”,即您存储文件的单一位置。通过 NFS 将该位置共享给两个服务器。其中一个服务器实际上可以是 NFS 服务器,因此您不需要为其配备另一台服务器。NFS 将缓存访问的文件,因此在初始访问之后,大多数访问都将是本地访问。它快速、简单且容易,并且如果它出现故障,修复起来比 DRBD 容易得多。
答案2
如果一方是“主”方,则使用 Rsync;如果双方都进行更改,则使用 Unison。我猜这些是您在使用 Google 时遇到的第一个工具。您是否尝试过它们但因为某种原因被拒绝了?还是您只是在自找麻烦?