我有2个networking服务器,有可能在这个过程中增加更多的服务器。 现在我使用lsyncd + csync2保持这些服务器同步。 由于所有文件都在两台服务器上(本地打开文件时不需要networking访问),但在其他情况下效果并不理想,因此性能performance良好。
其中一个例子是,如果我删除服务器1上的文件,并立即将新file upload到具有相同名称的服务器1。 同时从服务器2中删除该文件,导致服务器1上的新上传的文件被删除,服务器2向服务器1发送删除事件,完成“更新循环”。
我不禁想到,必须有更好的方法来保持服务器的同步。 我一直在看GlusterFS,我发现所有文件都复制到所有服务器的设置是不鼓励的。 但是,我正在这些服务器上运行Drupal等CMS系统。 这样的CMS系统通常会打开相当多的文件,我担心太多的networkingstream量来获取这些文件会减慢请求速度。
将GlusterFS设置为将所有文件复制到所有节点,这是一个想法,以取代lsyncd + csync2,或者这是一个坏主意?
BitTorrent同步可能为你做的事。 我使用它来保持我家里几台内部服务器之间的文件同步,而且它的工作非常出色。 另一件你需要考虑的是当你的应用程序使用CMS时,后端数据库。 确保有MySQL复制或者类似的东西。
Gluster可以解决你所遇到的问题,因为它可以容纳锁,传播更改 – 删除所有其他节点上的文件,但可能会增加额外的延迟,这可能是Web服务器的问题。 下一个select是DRBD + OCFS2或GFS,但这可能更复杂,因为你使用底层文件系统的gluster – 它不能在块级别运行,所以如果服务器不同步,修复不是太难,文件可以不会因为分裂的脑筋等原因而容易受到损坏
我们正在使用它作为一个邮件服务器,它是很慢的文件很多的目录。 在部署之前,您一定要testing一切。 我目前正在testingNFS挂载,因为它适用于小文件。
GlusterFS很难部署。 对于Web数据,像Unison这样的文件同步级别更容易部署和维护。
DRBD是在块级别保持数据同步的完美解决scheme。 但是你必须把它们格式化成像OCFS2之类的特殊格式。
你为什么不使用像木偶一样的工具? 一旦写入源文件,一旦准备好使用“傀儡踢”或mcolletive将其部署到目标。 这是有据可查的。 如果需要,您可以稍后添加服务器。
你也可以依靠使用inotify的工具,比如lsyncd,在内核级别工作。 它监视文件夹中的更改并触发同步。 但是,如果专用于像csync2这样的集群上的文件同步的工具是不够的,我不知道会是什么。
可以肯定的是,在服务器2上还是仅在服务器1上进行修改?