我对 AWS 还很陌生,所以请原谅我的无知。我们希望有一个设置,即我们有一个 SQL DB 实例 + Web 服务器实例。但是,我们希望 Web 服务器位于 ELB 后面,这样我们就可以使用 Autoscaling。但我的问题是,我们如何跨实例复制 Web 应用程序?例如,假设我们有两个 Web 服务器正在运行,我们需要对 Web 应用程序进行关键更新,最终我们只想上传到一个实例,而不是两个实例。
将您的 Web 应用程序存储在实例上是否是最佳实践,或者是否有更好的方法在实例之间存储和共享应用程序?
答案1
查看Elastic Beanstalk。它为你做一切。这是 AWS 提供的一项相当新的服务。
Elastic Beanstalk 自动处理容量配置、负载平衡、自动扩展和应用程序健康监控的部署细节。
它支持许多常见的 Web 开发语言:PHP、.NET、Java、Python 和 Ruby。我不确定您喜欢哪种语言,但如果是上述语言之一,您会发现从 IDE(Eclipse 或 Visual Studio)部署它相当容易。
即使您使用 Beanstalk 部署了实例,您仍然可以连接到它们。
手动操作的方法就是将实例与应用程序一起安装,并附加到 EBS。然后,应用程序的映像可以一次又一次地启动,并启动更多实例。您必须使用实例的 USER_DATA 字段对不同实例的配置进行一些更改(同样,如果太复杂,请再次查看 Beanstalk...)。
一种更自动化的方法是使用云形成,它基本上是一个描述不同服务器的脚本。使用此脚本,您可以非常轻松地启动多个实例。您可以通过 Web 控制台或使用 CLI 工具启动它们。我建议使用开源 Python 库博托。
您还可以考虑使用 S3 来存储和共享您的 Web 文件。您无需担心在实例之间复制文件,还可以使用CloudFront或其他 CDN 服务。
另一种方法是使用53 号公路,这是 AWS 的 DNS 服务,但它具有非常好的功能,可以将您的数据路由到不同的 Web 服务器进行 A/B 测试,或基于服务器的延迟 (LBR)。