请帮忙寻找在 Centos 5.5 64Bit 上实现双向实时同步的解决方案

请帮忙寻找在 Centos 5.5 64Bit 上实现双向实时同步的解决方案

我需要一个适用于 Centos 5.5/64Bit 的实时双向同步软件。

这里有一些解释:

它需要能够执行:

  1. 双向同步。

  2. 必须是实时的。实时意味着几乎是实时的,例如延迟 1 秒就可以了。

  3. 并且文件夹位于同一台服务器上。

我目前在两个 Web 服务器上使用 GlusterFS。但是,它读取小文件的性能非常差,导致我的网站速度变慢。没有其他办法可以改善这个问题,我已经测试了许多配置。作为解决方案,我打算安装一个 RAM 驱动器 (tmpfs) 来镜像 GlusterFS Web 文件,但让 Web 服务器使用该 RAM 驱动器。

问题是我需要 glusterfs 和 RAM 驱动器之间的双向实时镜像或复制。我需要这个,因为 Apache 也会写入文件。

正如我所说,两个文件夹之间实时双向同步。这实际上是两个不同的挂载点。RAM(tmpfs)挂载点和 GlusterFS 挂载点。

我已经了解:

  • Rsync - 一种方法
  • Unison - 非实时

请向我建议任何免费或付费的解决方案。

提前致谢

答案1

尽管安息香看起来是一个显而易见的解决方案,我之前曾深入研究过一个高度定制的 Web 应用程序 - 最快/最有效/最可靠的解决方案是在应用程序内实现复制 - 在将节点重新联机时使用 rsync。我确实有一个长期计划,即使用 inotify 作为触发器来实现基于需求的重新同步(但一直没有时间)。

作为一个解决方案,我打算安装一个 RAM 驱动器 (tmpfs),该驱动器镜像 GlusterFS Web 文件,但让 Web 服务器使用该 RAM 驱动器

是的,如果 GlusterFS 不支持缓存失效同步,那么它可能会稍微快一些(以不实时更新为代价),但除非您的数据周转率非常高,否则您可能会发现在传统设备而不是 RAM 驱动器上使用优化的文件系统更快。

您可能会看到任何共享磁盘文件系统都有类似的问题(但这主要是我的猜测)。

更好的解决方案是使用数据库(集群?)来存储任何数据 - 集群更易于管理(并且更容易实现)。另请参阅 mysql 复制和 Cassandra。

/me 想知道您是否可以使用覆盖文件系统(unionfs)-将本地副本放在顶部,将远程系统放在下面,然后从上到下定期运行 rsync - 尽管我怀疑删除文件可能会很困难。

高血压

C。

答案2

drbd + ocfs 或 GFS2:

将 GFS2 与 DRBD 结合使用
将 OCFS2 与 DRBD 结合使用

虽然我更倾向于使用 GFS2,但两者都可以工作,而且可能完全满足您的需求。您可以使用任一解决方案运行双主服务器。

答案3

您可以单独使用 Gluster 来做到这一点:
当您要求 Gluster 使用复制文件gluster volume VolumeName replica 2并访问每个站点上的本地 glusterfsd 时,mount -t glusterfs localhost:VolumeName /mountpoint您可以获得与其他本地文件系统相当的即时复制和访问时间(文件读取时无需网络往返)。

至少在我测试过的 gluster 版本 3.4.7 和 3.6.9 中确实如此。
(在提出这个问题时,可能还有更旧、更慢的版本。)

相关内容