将文件部署到多个服务器


11

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

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

我以为git可能可行,但是我们也可以指定多个遥控器来推送吗?

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


2
我认为不可能使用网络文件系统?
cjc 2012年

stackoverflow.com/questions/849308/…推送到多个遥控器的git技巧。但是,不确定约有数百个。
cjc 2012年

Answers:


14

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

听起来您还没有达到如此规模,但是设计您的部署系统不会受到任何损害,这样就不会很快成为瓶颈。


1
他们如何使用bittorrent?
Dragos

3
请参阅我链接到的文章。
EEAA

@EEAA Twitter链接已损坏
gprasant

@gprasant已修复。
EEAA

7

我不建议您在与git通话。它可以正常工作,但我个人认为使用该模型进行读取会存在一些缺陷。

有几件事情可以决定如何最好地做到这一点:

  1. 需要共享多少回购。
  2. 它需要收敛多快。

为了实现完美的融合和最大的速度,您必须使用网络文件系统,例如NFSv4。我知道的集群文件系统无法扩展到“数百个”节点,因此它必须是一个网络文件系统。这带来了自己的挑战,但是这意味着您在NFS磁头上更新文件时将达到融合。

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

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

备用服务器是push-rsync,它从中央存储库运行以将更新推送到服务器。它收敛的速度不如上述任何一种,但是对您的内部带宽更友好。使用多个主机将其推到划分的范围以提高速度。



-1

[附属]使用Kwatee(http://www.kwatee.net),可以根据需要部署在任意数量的服务器上。部署是增量的(仅传输修改的文件)并且可以并行化,因此部署非常快。您还可以将Kwatee配置为负载平衡器,以便在更新过程中将服务器从LB中删除,然后重新插入。有一个图形界面可以配置部署参数,然后可以通过GUI手动触发部署,也可以使用python命令自动部署。


关心解释否决票吗?
mac

1
加入该站点只是为了拉皮条自己的产品,经常在这里引起人们的反对。
ceejayoz

无论如何,诚实和透明的答案就这么多了
mac
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.