大文件树是指大约 20 万个文件,并且一直在增长。但是,在任何给定的小时内更改的文件数量相对较少。
双向我的意思是更改可能发生在任一服务器上并且需要推送到另一台服务器,因此 rsync 似乎不合适。
遥远的意思是服务器都在数据中心,但在地理上彼此相距遥远。目前只有 2 个服务器,但随着时间的推移可能会扩展。
实时地,同步之间有一点延迟是可以的,但是每 1-2 分钟运行一次 cron 似乎是不对的,因为在任何给定的小时内,很小的一部分文件可能会发生变化,更不用说分钟了。
编辑:这是在 VPS 上运行的,所以我可能会限制我可以做的内核级别的事情。此外,VPS 的资源并不丰富,所以我会回避需要大量内存的解决方案(比如 Gluster?)。
完成这项工作的最佳/最“被接受”的方法是什么?这似乎是一个普遍的需求,但我还没有找到一种普遍接受的方法,这令人惊讶。(我正在寻求群众的安全。:)
我遇到过lsyncd在文件系统更改级别触发同步。这看起来很聪明,虽然不是很常见,但我对各种 lsyncd 方法有点困惑。只是将 lsyncd 与 rsync 一起使用,但似乎这对于双向性来说可能很脆弱,因为 rsync 没有内存概念(例如,要知道 A 上已删除的文件是否应在 B 上删除,或者它是否是 B 上的新文件应该复制到 A)。 唇形看起来只是一个lsyncd + rsync的实施,对不对?
然后将 lsyncd 与csync2一起使用,如下所示:https : //icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ...我倾向于这种方法,但是csync2 有点古怪,但我确实对它进行了成功的测试。我最担心的是我找不到很多社区对此方法的确认。
这里的人似乎很喜欢 Unison,但它似乎不再处于积极开发状态,并且不清楚它是否具有像 lsyncd 这样的自动触发器。
我已经看到Gluster提到过,但也许对我需要的东西来说太过分了?
更新:仅供参考 - 我最终采用了我提到的原始解决方案:lsyncd+csync2。它似乎工作得很好,而且我喜欢让服务器非常松散地连接的架构方法,这样每个服务器都可以无限期地独立运行,而不管它们之间的链接质量如何。
我有 2 个网络服务器,在此过程中可能不得不添加更多服务器。现在我使用 lsyncd + csync2 使这些服务器保持同步。它在性能方面运行良好,因为所有文件都在两台服务器上(无需网络访问即可在本地打开文件),但在其他情况下效果不佳。
一个例子是,如果我删除了服务器 1 上的一个文件,并立即将一个新文件上传到服务器 1,该文件具有相同的名称。然后该文件将同时从服务器 2 中删除,导致服务器 1 上新上传的文件被删除,因为服务器 2 将删除事件发送到服务器 1 以完成“更新循环”。
我不禁想到必须有更好的方法来保持服务器同步。我一直在研究 GlusterFS,我发现不鼓励将所有文件复制到所有服务器的设置。但是,我在这些服务器上运行了像 Drupal 这样的 CMS 系统。这样的 CMS 系统通常会打开相当多的文件,我担心太多的网络流量无法获取这些文件会减慢请求速度。
考虑将 lsyncd + csync2 替换为设置为将所有文件复制到所有节点的 GlusterFS 是一个想法,还是一个坏主意?