远程Linux服务器之间的大文件树的双向实时同步

大文件树的意思是大约20万个文件,并且一直在增长。 但是,在任何给定的小时内,相对较less数量的文件正在被更改。

通过双向我的意思是可能会发生任何服务器上的变化,需要推到另一个,所以rsync似乎不合适。

远处我的意思是服务器都在数据中心,但在地理上彼此远离。 目前只有2台服务器,但随着时间的推移可能会扩大。

通过实时,可以在同步之间有一点延迟,但是每1-2分钟运行一次cron似乎并不正确,因为在任何给定的小时内文件的一小部分可能会改变,更不用说分钟了。

编辑 :这是在VPS上运行,所以我可能会限制在我可以做的内核级别的东西。 另外,VPS不是资源丰富的,所以我会回避那些需要大量ram的解决scheme(比如Gluster?)。

什么是最好的/最“接受”的方法来完成这个工作? 这似乎是一个普遍的需要,但我还没有能够find一个普遍接受的方法,这是令人惊讶的。 (我正在寻求群众的安全:)

我遇到了lsyncd在文件系统更改级别触发同步。 这似乎很聪明,虽然不是很常见,而且我对各种lsyncd方法有些困惑。 只是使用rsync与rsync,但似乎这可能是脆弱的双向性,因为rsync没有内存的概念(例如 – 知道A上删除的文件是否应删除B或是否是一个新的文件B应该被复制到A)。 lipsync看起来只是一个lsyncd + rsync的实现,对吧?

然后,使用与CSync2的lsyncd ,像这样: http : //www.axivo.com/community/threads/lightning-fast-synchronization-with-csync2-and-lsyncd.121/ …我倾向于这种方法,但csync2有点古怪,虽然我做了一个成功的testing。 我最担心的是,我没有find很多社区确认这种方法。

这里的人们似乎很喜欢Unison,但似乎已经不再处于积极的发展之中 ,并不清楚它是否具有像lsyncd这样的自动触发器。

我已经看到Gluster提到,但可能矫枉过正我需要什么?

更新: fyi-我结束了我提到的原始解决scheme:lsyncd + csync2。 它似乎工作得很好,我喜欢让服务器非常松散地连接的架构方法,以便每个服务器可以无限地自行运行,而不pipe它们之间的链路质量如何。

具有代理的 双主模式下的DRBD是一个选项。

为什么不通过NFS共享相同的文件系统,而不是同步?

实施分布式文件系统可能比使用工具和脚本对其进行攻击要好,特别是在服务器集群将会增长的情况下。 你也可以更好地处理一个失败的节点。

我不认为Gluster(或AFS)是完全有效的。

在你的情况下,我会build议在双主模式和gfs或ocfs DRBD的组合。

双基本DRBD的缺点是它将以同步模式运行。 但是写入速度在这里似乎并不重要?

DRBD的替代scheme可能是使用许多(2 +)iSCSI目标的Soft-Raid1,但我更喜欢DRBD有两个节点。

如上所示,许多解决scheme都是可用的,每种解决scheme都有其优点和缺点。

我想我会考虑把整个树放在版本控制之下(例如Subversion ),并定期检查/更新两个cron作业的服务器。

刚刚结束了对同样的事情的追求,我要与gluster。 但是,我还没有做或发现任何性能testing。