Jus*_*tin 11 deployment rsync git
我们在 .server-1 中有一个文件的中央存储库/srv/www
。然后我们也有 N 台服务器。我们希望 server-1 能够/srv/www
尽可能快速有效地将其文件部署到所有服务器。
是否有类似 rsync 的东西,但不是指定单个目标,而是指定目标集群(N 个服务器)?
我在想git
可能有用,但是我们也可以指定多个遥控器来推送吗?
假设 N 个服务器最终可能达到数百个,最好的解决方案是什么。
我不推荐 git 用于您正在谈论的秤。它可以工作,但我个人认为使用该模型进行获取存在一些缺陷。
有几件事决定了如何最好地解决这个问题:
为了完美融合和最大速度,您必须使用网络文件系统,例如 NFSv4。我所知道的集群文件系统不能扩展到“数百个”节点,因此它必须是一个网络文件系统。这提出了自己的挑战,但这意味着您将在 NFS 头上更新文件的那一刻达到收敛。
为了快速收敛,您可以使用一些 rsync 技巧。如果 rsync 守护进程最终受 CPU 限制,您当然可以将三个 rsync 服务器放在像 haproxy 这样的负载均衡器后面。将其与用于拉取数据的 cron 作业(或其他触发代码更新的方法)相结合,您可以很快达到收敛。
对于上述两种情况,将中央存储库放在 10GbE 链路上以获得最大吞吐量可能是一个好主意。
另一种方法是 push-rsync,它从中央存储库运行以将更新推送到您的服务器。它不会像上述任何一个那样快速收敛,但会对您的内部带宽更友好。使用多个主机推送到不同的范围以获得更好的速度。