如何将编译的代码同步到多个EC2实例

时间:2011-03-16 04:06:55

标签: c# deployment amazon-s3 amazon-ec2

我们在负载均衡器后面有几个EC2实例。每个服务器都部署了几个ASP.NET应用程序。我正在寻找一种简单,实时,自动的方式,将新的编译的代码同时部署到所有实例。

我见过使用源代码控制存储库(如SVN或Git)的解决方案,但这似乎不适合我们使用该技术,因为我们正在将编译代码部署到EC2实例 - 而不是源代码。

我还设置了Dropbox来完成同步。它有点奏效,但有它的怪癖。例如,您需要围绕“一个根同步文件夹”限制构建目录结构。还有什么其他原因我们绝对不应该使用Dropbox吗?

使用S3 API编写自定义应用程序是一种选择,但我们更倾向于使用第三方解决方案来编写更多代码。

这似乎是一种常见的情况,但我还没有找到任何好的解决方案。

6 个答案:

答案 0 :(得分:4)

Elastic Beanstalk似乎是现在最好的路线。您只需将Web部署项目推送到弹性beanstalk环境,它就会将代码部署到所有实例。 (它为您管理自动缩放。)它还确保启动的新实例将为您提供最新代码,并保留以前可以轻松回滚的版本。

如果您的asp.net网站需要在AWS上自动扩展,Elastic Beanstalk确实是最好的端到端解决方案。

答案 1 :(得分:1)

由于这些是ASP.Net应用程序和IIS,为什么不使用Web部署。这是为此而制造的。

http://www.iis.net/download/webdeploy

  

Web Deploy允许您通过检测源和目标内容之间的差异并仅传输需要同步的更改来有效地同步IIS 7.0服务器场中的站点,应用程序或服务器。该工具通过自动确定要为特定站点同步的配置,内容和证书来简化同步过程。除了默认行为之外,您还可以选择为同步指定其他提供程序,包括数据库,COM对象,GAC程序集和注册表设置。

答案 2 :(得分:1)

您可以使用Git,Mercurial或SVN将已编译的代码推送到服务器,或让服务器获取代码。源代码控制不仅适用于源代码 - 它可以用于任何类型的文件。

此外,Dropbox问题的一种方法是使用多个DropBox帐户,如果这是问题。但Dropbox是一个非常简单的解决方案,因为您永远不需要编写任何代码。只要Dropbox启动,它就能正常工作。

答案 3 :(得分:1)

您可能想尝试AppHarbor。我们负责管理ASP.NET应用程序服务器,负载均衡器和所有其他所需的基础架构,让您继续开发应用程序。我们还提供了一种方便的方式,您可以使用您选择的Git,Mercurial,Subversion和TFS来推送应用程序的新版本。

答案 4 :(得分:0)

Git或mercurial会做得很好,颠覆在处理blob方面很糟糕。

您可以获得非常好的控制和保证,通过查看修订版,代码可以在任何地方部署。

答案 5 :(得分:0)

看起来很明显,但共享文件系统?或者用scp或rsync推出?