我对AWS很新,所以请原谅我的无知。 我们想要有一个设置,我们有一个SQL数据库实例+ Web服务器实例。 但是我们希望Web服务器坐在ELB后面,这样我们就可以使用Autoscaling。 然而,我的问题是如何跨实例复制Web应用程序? 比方说,我们有两个Web服务器正在运行,我们需要对Web应用进行重要的更新,最终我们只想上传到一个实例,而不是两个。
在实例中存储Web应用程序甚至是最佳实践,还是有更好的方法来存储和共享实例之间的应用程序?
查看Elastic Beanstalk 。 它使一切为了你。 这是来自AWS的一个相当新的服务。
Elastic Beanstalk会自动处理容量configuration,负载平衡,自动扩展和应用程序运行状况监视的部署细节。
它支持许多常用的Web开发语言:PHP,.NET,Java,Python和Ruby。 我不确定你喜欢的语言是什么,但是如果是上述语言之一,你会发现从IDE(Eclipse或Visual Studio)部署它相当容易。
即使您使用Beanstalk部署了它们,仍然可以连接到您的实例。
手动的方法是简单地将你的实例安装在你的应用程序中,并附加到EBS中。 然后可以使用更多的实例一次又一次启动应用程序的映像。 你将不得不通过使用实例的USER_DATA字段来对不同实例的configuration进行一些更改(如果太复杂,再次查看Beanstalk …)。
更自动的方式是使用CloudFormation ,它基本上是一个描述你的不同服务器的脚本。 使用这个脚本你可以很容易地启动几个实例。 您可以通过Web控制台或使用CLI工具启动它们。 我build议使用开源的Python库boto 。
你也可以考虑使用S3来存储和分享你的网页文件。 您不必担心在实例之间复制文件,也可以使用CloudFront或其他CDN服务来提供这些文件。
另一种方法是使用Route 53 ,它是AWS的DNS服务,但它具有非常好的function,可以将数据路由到不同的Web服务器进行A / Btesting,或者基于服务器的延迟(LBR)。