代码之家  ›  专栏  ›  技术社区  ›  Moshe Shaham

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

  •  0
  • Moshe Shaham  · 技术社区  · 5 年前

    我有两个实例,连接到负载均衡器。我想停止1个实例,并且只在某个警报发生时启动它,例如当第一个入口的CPU负载很高时。

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

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

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

    1 回复  |  直到 5 年前
        1
  •  0
  •   danimal    5 年前

    这并不是自动缩放的实际工作方式,因此,解决特定问题的方法比简单地使用自动缩放创建新实例来响应所跨越的度量阈值要复杂一些。也许有必要问问你自己,为什么你需要这样做,以及它是否能以通常的方式实现。

    为了实现启动(和停止)特定实例,您需要三个部分:

    • 由您需要的度量触发的CloudWatch警报( CPUUtilization )越过你想要的门槛。

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

    • 订阅了sns主题的lambda函数(具有正确的IAM权限),它将相关的API调用发送到ec2,以便在sns的通知到达时启动或停止实例。您可以找到一些执行此操作所需的代码示例,例如 here in node.js here from AWS 如果你更喜欢另一种语言,可能还有其他语言。

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

        2
  •  -1
  •   IllegalSkillsException    5 年前

    EC2自动缩放创建和管理触发缩放策略的CloudWatch警报,并根据度量和目标值计算缩放调整。AWS为我们提供了不同类型的度量来跟踪使用情况,然后根据配置值触发警报。在你的情况下,你将使用 ASGAverageCPUUtilization 公制。

    因此,当一台机器上的CPU利用率增加时,它将自动启动一个新实例,负载均衡器将负责分配负载。

    您可以在下面的链接中找到问题的详细答案以及如何实现这一点。

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