当另一个实例过载时,如何启动特定实例?

时间:2019-04-21 07:41:43

标签: amazon-web-services amazon-ec2

我有2个实例,已连接到负载均衡器。我想停止1个实例,仅在发生某种警报时才启动它,例如,当第一个实例具有较高的CPU负载时。

我找不到方法。在“自动缩放”组中,我看到我可以启动一个全新的实例,但这不是我想要的,我希望一个特定的实例启动。

我找不到将警报连接到操作的方法-唤醒此特定实例。

这应该在负载均衡器配置中完成吗?我找不到方法...

2 个答案:

答案 0 :(得分:0)

这并不是自动缩放应该起作用的方式,因此,解决特定问题的方法比简单地使用自动缩放来创建新实例来应对指标阈值要复杂得多。也许应该问问自己自己为什么需要这样做,以及是否可以通过通常的方式实现。

要实现启动(和停止)特定实例,您需要三件:

  • 由您需要的指标(CPUUtilization)超出所需阈值触发的CloudWatch警报。

  • 在上一步中由警报触发的SNS主题。

  • 已订阅SNS主题的lambda函数(具有正确的IAM权限),当来自SNS的通知到达时,该函数会将相关的API调用发送到EC2以启动或停止实例。您可以找到执行此操作所需的一些代码示例,例如here in node.jshere from AWS,但如果您喜欢另一种语言,则可能还有其他示例。

将所有这些放在一起后,您应该能够通过启动和停止特定实例来响应CPU的变化。

答案 1 :(得分:-1)

EC2 Auto Scaling创建并管理触发缩放策略的CloudWatch警报,并根据指标和目标值计算缩放调整。 AWS为我们提供了不同类型的指标,以跟踪使用情况,然后根据配置值触发警报。就您而言,您将使用ASGAverageCPUUtilization指标。

因此,当一台计算机上的CPUUtilization增加时,它将自动启动一个新实例,并且负载均衡器将负责分配负载。

您可以在以下链接中找到问题的详细答案以及如何实现相同的目的。

https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html