当在 EC2 上使用自动扩展组时,文档说您可以根据 cloudwatch 指标触发新服务器。是否可以自己启动新实例?
例如,一个应用程序有一个内部项目队列,一旦该队列达到阈值,它就会向 EC2 发送通知以向组中添加更多服务器。
那可能吗?
当在 EC2 上使用自动扩展组时,文档说您可以根据 cloudwatch 指标触发新服务器。是否可以自己启动新实例?
例如,一个应用程序有一个内部项目队列,一旦该队列达到阈值,它就会向 EC2 发送通知以向组中添加更多服务器。
那可能吗?
为了将来访问此答案的用户的利益,这里有一个更详细的解释:
EC2 允许您根据计划或根据需求手动设置/更改 Auto Scaling 组的容量,如文档中所述。
然而,手动扩展这个术语可能有点误导,因为就像 AWS 的几乎所有方面一样,您可以手动执行的所有操作都可以通过 CLI 或 SDK 编写脚本。
在 EC2 自动伸缩组的情况下,容量是可配置的,并且可以在运行时动态更改 - 容量的更改将导致实例自动添加或删除。
因此,在这种情况下,一种解决方案是在您的应用程序代码中检测特定于您的应用程序的生命周期事件,并使用相关的 AWS 开发工具包来响应这些事件来更改您的自动扩展组的容量。
在 ruby 中,这可以按如下方式完成(示例取自AWS API 文档):
autoscaling = Aws::AutoScaling::Client.new(
region: region_name,
credentials: credentials
)
resp = autoscaling.set_desired_capacity(
# required
auto_scaling_group_name: "ResourceName",
# required
desired_capacity: 1,
honor_cooldown: true,
)
我发现答案是肯定的,相关文档在这里:http ://docs.amazonwebservices.com/AutoScaling/latest/DeveloperGuide/scaling_typesof.html