好奇这是否可能:
我们有一个 Web 应用程序,在大多数情况下,它与我们的单个小实例一起工作得很好。但是,当我们让多个客户同时运行密集查询时(我们是云调度服务);我们的实例陷入了接近 80% 的 cpu 负载并且变得非常无响应。
有没有办法让 AWS 快速启动另一个小实例(或几个),只在它在这种高负载下运行的时候?但是,真正的问题是,当我们对应用程序进行非常频繁的编程更新时,它是如何工作的?每次上传代码更改时,我们是否必须手动创建新图像???
谢谢
好奇这是否可能:
我们有一个 Web 应用程序,在大多数情况下,它与我们的单个小实例一起工作得很好。但是,当我们让多个客户同时运行密集查询时(我们是云调度服务);我们的实例陷入了接近 80% 的 cpu 负载并且变得非常无响应。
有没有办法让 AWS 快速启动另一个小实例(或几个),只在它在这种高负载下运行的时候?但是,真正的问题是,当我们对应用程序进行非常频繁的编程更新时,它是如何工作的?每次上传代码更改时,我们是否必须手动创建新图像???
谢谢
您永远不应该在单个 EC2 实例上运行任何重要的东西。实例可以——而且确实——随机下线。始终使用跨多个可用区的自动缩放 (AS) 组。当您触发某个触发器(在您的情况下为 CPU 利用率)时,AS 组将自动使新实例联机。然后它会在流量减少时缩减实例。自动缩放是 AWS 的核心和灵魂,如果您不使用它,您还不如使用更便宜(更耐用)的 VPS 主机。
不,您不想为每个代码版本创建一个新的 AMI。理想情况下,您应该使用基本 AMI(如 Amazon 的官方之一),然后在启动时自动配置。您可以在启动 AMI 时使用“用户数据”字段来引导此过程。它可以像从 Git 存储库中提取的 bash 脚本一样简单,也可以像 Puppet 或 Chef 这样复杂。
我创建自定义 AMI 的唯一一次是配置过程花费的时间太长。但是,这几乎总是可以通过将所需文件存储在 S3 中来解决。