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