我为静态内容创建了一个子域,以便能够通过多个负载平衡的 Web 服务器更有效地为其提供服务。此静态内容会自动更新,速度约为 1k 文件/天。
现在我使用rsync以主/从方式更新服务器,但是由于内容的文件数量越来越多,超过 100k+ 的文件,这需要越来越多的时间,并且在主服务器和从服务器上都增加了 I/O 负载。
我无法使用我在“提高 rsync 性能”问题上提出的解决方案,因为我无法知道哪些文件在没有stat
全部 -ing 的情况下被修改,而这并不能解决不断增加的 I/O 成本。我还必须处理文件删除。
我曾考虑在从属设备上使用ar/o NFS之类的东西,但这可能会在一定程度上破坏负载平衡效果并造成无缘无故的SPOF。
顺便说一句,服务器正在运行 AIX,但我也对更通用上下文中的解决方案感兴趣。
您可能应该考虑使用 OCFS 的 DRBD,以便您可以拥有主/主节点。这不会创建 SPOF,因为每个节点都有一个本地副本。
您还可以制作两个 NFS 节点服务器(DRBD 主/备用或带 LB 的 DRBD 主/主)。如果你有很多节点,这是最好的选择。
为什么不直接使用反向代理,比如Squid?
如果您使用 rsync,请确保每次同步文件时都不会访问这些文件。这样,只有文件列表和时间戳得到比较,即使有数百万个文件,也应该相当快。
rsync -t 应该复制时间戳并仅比较时间戳。如果这不起作用,请使用选项 size-only (如果您的文件可能会更改而不更改大小,请小心)