将代码部署到负载平衡的环境中

我们正在开始考虑在许多虚拟服务器(CloudServers @ Rackspace)上托pipe我们的网站。 正如我想通过考虑,一个想到的是我们如何部署从我们的Subversion回购代码到这些服务器?

可能性:A)进入每一个SSH并运行'svn update'B)为我做的(A)的脚本c)还有其他的东西?

有什么其他的方法将代码部署到n台服务器。 对于2台服务器,我认为(A)或(B)是非常简单的,但那些有1000台服务器的网站呢? 他们如何pipe理代码部署?

更新:这是我在这个主题find一个很好的链接。 HighScalability.com:代码部署工具

我熟悉的三种最常见的:

  • 自定义软件包(rpm,.deb等)和自定义存储库(yum,apt等)。 设置东西,所以你可以build立包,并直接从svn推入他们的存储库。
  • 木偶 ,厨师,cfengine等…
  • Capistrano的

实际使用所有这三个不是不合理的。 包包含代码,configurationpuppet以及capistranopipe理更新。

在之前的工作中,我们没有1000台服务器,但是我们有20或30台服务器。我们有一个跳码服务器,代码被推送到它,它每隔三分钟运行一次rsync,将代码推送给所有其他服务器。

另一种做法是,我们现在的工作是做一个所有代码运行的NFS挂载。

如果代码是“集群安全的”,就像在每个系统上完全相同的代码一样 – 然后将代码整合到一个NFS服务器上(或两个HA)。

只需将您的存储库一次性检出到NFS服务器上,然后在每个应用程序服务器上安装包含相同代码的共享。

现在你只有一个位置保持更新。

怎么样共享存储后端? 将代码加载到一个地方,然后所有服务器都使用更新后的副本。