2011-03-16 79 views
6

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

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

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

使用S3 API编写自定义应用程序是一个选项,但我们宁愿使用第三方解决方案来编写更多代码。

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

有什么建议吗?

回答

3

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

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

+0

如果您更喜欢在简单的EC2服务器上工作,该怎么办?在EC2服务器上设置自动缩放并非难事。 – digitaldavenyc 2015-03-18 19:47:47

+0

@digitaldavenyc,这很容易做到,但弹性豆茎也是如此。自动缩放是您通过弹性豆茎免费获得的功能的子集。您还会收到来自自动缩放事件的通知以及代码部署。 – jaminto 2015-03-30 20:17:00

+0

AWS代码部署http://aws.amazon.com/codedeploy/只是beanstalk的部署部分。问题是你想要做什么?如果它运行一个Web应用程序,我不知道你为什么不使用豆茎。如果它运行的是命令行应用程序,那么是的,beanstalk可能不会为你做,但beanstalk上的工作层可以帮助http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing- env-tiers.html – jaminto 2015-03-30 20:19:53

0

Git或mercurial会做得很好,颠覆不好在处理blob。

而且你会得到非常好的控制和保证,通过查看修订版将代码部署到处。

0

似乎很明显,但共享文件系统?或者用scp或rsync推出?

1

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

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

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

+3

这里的问题是Web部署需要知道您的服务器的IP能够部署到他们。使用自动调整的实例,这并不容易 - 您不知道自动启动的实例的公有IP。看起来您需要使用AWS API以某种方式获取此信息 – jaminto 2012-04-13 13:51:02

1

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

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

1

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