将文件部署到多个服务器

Jus*_*tin 11 deployment rsync git

我们在 .server-1 中有一个文件的中央存储库/srv/www。然后我们也有 N 台服务器。我们希望 server-1 能够/srv/www尽可能快速有效地将其文件部署到所有服务器。

是否有类似 rsync 的东西,但不是指定单个目标,而是指定目标集群(N 个服务器)?

我在想git可能有用,但是我们也可以指定多个遥控器来推送吗?

假设 N 个服务器最终可能达到数百个,最好的解决方案是什么。

EEA*_*EAA 14

好吧,TwitterFacebook已经开始在它们的集群中使用 bittorrent 来分发新的代码版本。这样做,与老式的集中部署方法相比,他们能够在很短的时间内将代码推送到数万台服务器。

听起来您还没有达到那种规模,但是设计您的部署系统并使其不会很快成为瓶颈并没有什么坏处。

  • 请参阅我链接到的文章。 (3认同)

sys*_*138 7

我不推荐 git 用于您正在谈论的秤。它可以工作,但我个人认为使用该模型进行获取存在一些缺陷。

有几件事决定了如何最好地解决这个问题:

  1. 需要分享多大的回购。
  2. 它需要多快收敛。

为了完美融合和最大速度,您必须使用网络文件系统,例如 NFSv4。我所知道的集群文件系统不能扩展到“数百个”节点,因此它必须是一个网络文件系统。这提出了自己的挑战,但这意味着您将在 NFS 头上更新文件的那一刻达到收敛。

为了快速收敛,您可以使用一些 rsync 技巧。如果 rsync 守护进程最终受 CPU 限制,您当然可以将三个 rsync 服务器放在像 haproxy 这样的负载均衡器后面。将其与用于拉取数据的 cron 作业(或其他触发代码更新的方法)相结合,您可以很快达到收敛。

对于上述两种情况,将中央存储库放在 10GbE 链路上以获得最大吞吐量可能是一个好主意。

另一种方法是 push-rsync,它从中央存储库运行以将更新推送到您的服务器。它不会像上述任何一个那样快速收敛,但会对您的内部带宽更友好。使用多个主机推送到不同的范围以获得更好的速度。