我们有三台运行 Ubuntu Server 10.04 的服务器,通过 DNS 在它们之间进行负载平衡。我们使用 Django、nginx 提供内容,并使用 PostgresQL 作为数据库。
对于 PostgresQL,有一些镜像解决方案,但是使用“三主”模式来镜像我们的静态文件的最佳方法是什么?
我猜想仅仅 rsyncing 它们不是一种可扩展且易于维护的方法。
答案1
只要文件不经常更改且必须始终保持同步,为什么不使用 rsync?只需确保您有一个主服务器来编辑文件,这样同步就更容易了。
除此之外,像 NFS 这样的网络文件系统也可以工作,或者你可以实现类似DRBD以始终保持文件同步。
答案2
还有许多其他解决方案(afs,unionfs......),但 rsync 在单向复制方面表现得出奇的好,并且具有自我修复功能 - 并且可以根据您定义的复制路径进行扩展(单个主服务器最多可以容纳大约 5 个从服务器,但除此之外,可能有充分的理由进行多层复制)。
唯一的问题是复制的时间。由于您使用的是循环 DNS,因此您已经具有服务器亲和性 - 因此您不会遇到用户更新服务器 A 后由于正在查看服务器 B 而无法看到更新的问题。但代码传播的延迟可能会给部署带来一些麻烦(特别是如果您的代码依赖于对通用数据库的 DDL 更改)。
如果您必须进行双向复制(尽可能避免),那么实时复制系统会更合适。
如果您当前正在手动/通过 cron 运行 rsync,您可能考虑使用 inotify 在文件发生变化时运行 rsync,这样延迟就会变得非常短。
C。