我们开始考虑在多台虚拟服务器(CloudServers @ Rackspace)上托管我们的网站。当我仔细考虑这些因素时,我想到的是如何将 Subversion 存储库中的代码部署到这些服务器上?
可能性:A)通过 SSH 进入每一个并运行“svn update”B)为我执行(A)的脚本c)还有别的吗?
还有什么其他方法可以将代码部署到 n 台服务器。如果服务器有 2 台,我认为 (A) 或 (B) 都很容易,但对于拥有 1,000 台服务器的网站怎么办?他们如何管理代码部署?
更新:这是我在这个主题上找到的一个很好的链接。 HighScalability.com:代码部署工具
答案1
我所熟悉的最常见的有三种:
- 自定义软件包(rpm、.deb 等)和自定义存储库(yum、apt 等)。设置好后,您就可以构建软件包并直接从 svn 将其推送到存储库中。
- 木偶、Chef、cfengine 等等……
- 卡皮斯特拉诺
实际上使用这三个工具并不不合理。包用于保存代码,puppet 用于配置代码,capistrano 用于管理推送更新。
答案2
在之前的工作中,我们没有 1000 台服务器,但有 20 或 30 台。我们有一个跳转服务器,代码被推送到该服务器,它每三分钟运行一次 rsync 以将代码推送到所有其他服务器。
另一种方法是安装一个 NFS,所有代码都从该 NFS 上运行,这也是我目前的工作所采用的方法。
答案3
如果代码是“集群安全的” - 就像您在每个系统上部署完全相同的代码一样 - 那么将代码合并到 NFS 服务器上(或两个用于 HA 的服务器)。
只需将您的存储库检出到 NFS 服务器上一次,然后在每个应用程序服务器上安装包含相同代码的共享。
现在您只需一个位置即可保持更新。
答案4
那么共享存储后端怎么样?将代码加载到单个位置,然后所有服务器都会使用更新后的副本。