我们已经到了开始考虑在许多虚拟服务器(CloudServers @ Rackspace)上托管我们的站点的地步。考虑到这些因素,我想到的一个问题是我们如何将 Subversion 存储库中的代码部署到这些服务器上?
可能性:A) SSH 进入每一个并运行 'svn update' B) 为我执行 (A) 的脚本 c) 别的什么?
还有哪些其他方法可以将代码部署到 n 个服务器。如果有 2 台服务器,我认为 (A) 或 (B) 都足够简单,但是拥有 1,000 台服务器的站点呢?他们如何管理代码部署?
更新:这是我在这个主题上找到的一个很好的链接。 HighScalability.com:代码部署工具
我最熟悉的三个最常见的:
实际使用所有这三个并不是不合理的。用于保存代码的包、用于配置代码的 puppet 以及用于管理推送更新的 capistrano。
在之前的工作中,我们没有 1000 台服务器,但确实有 20 或 30 台。我们有一个将代码推送到的跳转服务器,它每三分钟运行一次 rsync 以将代码推送给所有其他服务器。
另一种方法,也就是我们在当前工作中所做的,是使用 NFS 挂载来运行所有代码。
如果代码是“集群安全的”——就像你实际上在每个系统上部署完全相同的代码——那么将代码整合到 NFS 服务器上(或两个用于 HA)。
只需在 NFS 服务器上签出您的存储库一次,然后在每个应用程序服务器上安装一个包含相同代码的共享。
现在您只有一个位置可以保持更新。
共享存储后端呢?将代码加载到一个地方,然后所有服务器都使用更新的副本。