【问题标题】:AWS - Autoscaling not launching/killing instances as specifiedAWS - 自动缩放未按指定启动/终止实例
【发布时间】:2017-03-17 14:47:28
【问题描述】:

我正在测试 AWS 自动缩放。我创建了一个简单的弹性豆茎并编辑了缩放设置。这是 Auto Scaling 组扩展策略的屏幕截图:

如您所见,我试图让该组拥有 5 到 10 个永久健康的实例。实例的最大和最小数量已设置为 20 和 2。

我只运行了 2 个实例(最少)。

报警定义为:

  • ping 服务器太健康了
  • ping 服务器不够健康

负载均衡器的警报似乎工作正常:

但是伸缩组没有启动新实例。我已经尝试以相反的方式设置警报(我不确定当它们从 true 变为 false 或从 false 变为 true 时会触发它们),这会导致 20 个实例(最大值)

【问题讨论】:

    标签: amazon-web-services autoscaling


    【解决方案1】:

    不是您应该使用 Auto Scaling 的方式。

    当 Elastic Beanstalk 创建“负载平衡、自动缩放”环境时,它会为您创建 Auto Scaling 组。作为这些配置的一部分,您可以指定要在 Auto Scaling 组中启动的最小最大数量的实例:

    Auto Scaling 组随后会将实例的当前 Desired Capacity 保持在最小值和最大值之间。如果一个实例失败(定义如下),Auto Scaling 将自动将该实例替换为另一个实例以保持所需容量

    扩展策略随后用于调整所需容量。扩展策略应使用某种“负载”度量来确定何时添加或删除实例,例如 CPU 利用率或 Amazon SQS 队列的大小。目的是在需要更多容量时添加额外的服务器,并在容量过多时移除服务器。

    HealthyHostCount 指标表示有多少服务器通过了 Elastic Load Balancing 运行状况检查。如果实例未通过健康检查,负载均衡器将停止向其发送请求,但会继续执行健康检查。如果实例再次变得健康,负载均衡器将继续向该服务器发送请求。可以将 Elastic Load Balancing 运行状况检查配置为检查服务器上的特定页面,以确认应用程序运行状况良好

    Auto Scaling 执行健康检查时,它只是checking the the status of the virtualization environment,与EC2 管理控制台显示2/2 status checks 的方式相同。但是,可以将 Auto Scaling 配置为使用 Elastic Load Balancing 运行状况检查。这样,Auto Scaling 可以收到应用程序运行状况不佳的通知,并且可以自动替换失败的实例(或具有失败应用程序的实例)。

    您说您的目标是“让该组有 5 到 10 个永久健康的实例”。这是 Auto Scaling 的工作,尤其是当它已配置为使用 Elastic Load Balancing 运行状况检查时。扩展策略的工作是根据工作负载确定何时添加/删除实例。 不应将扩展策略用作替换不正常实例的手段。

    所以,我建议:

    • 在负载均衡器中配置运行状况检查,以准确检查应用程序的运行状况
    • 在您的 Auto Scaling 组中开启 ELB 运行状况检查(这将确保应用程序运行状况不佳的实例将被替换)
    • 使用扩展策略根据工作负载而不是健康状况来添加/删除实例
    • 相信系统。有效!

    【讨论】:

    • 非常感谢您的详细回答。我认为您对我的问题的糟糕设计选择是正确的,并且最终扩展应该取决于应用程序的健康状况。我设置了这些扩展策略来测试扩展行为,因为它们比基于工作负载的环境更容易在暂存环境中进行测试。但是,当前设置不应该导致 5 到 10 个实例之间的扩展吗?在转向信任系统之前,我想了解并测试警报/扩展策略机制!目前这意味着获得一组 5-10 个实例 :)
    • 您可以通过控制台手动触发扩展策略(“执行”)。但是,如果您想要对系统进行真正的测试,您的扩展策略应该基于负载,因此您必须以某种方式生成负载。
    • “执行”按比例放大或缩小,但除外。我不确定警报是否正常工作,因为它们应该被触发,并自动触发放大和缩小。我认为目前它正在尝试删除实例,并达到了下限。如果我恢复警报,它会变为 20(上限),表明警报确实被触发了,但逻辑不正确
    • @JohnRotenstein 您能否详细说明这一点“在您的 Auto Scaling 组中打开 ELB 运行状况检查(这将确保替换具有不正常应用程序的实例)”?我可以在“配置”中的哪个位置控制此设置?
    • @littleibex 请提出一个新问题,而不是像 cmets 一样就旧问题提出问题。 (顺便说一句,它是 Auto Scaling 组中的设置。我不确定它是否是直接在 Elastic Beanstalk 中的设置。)
    猜你喜欢
    • 2015-03-18
    • 2021-04-20
    • 2012-06-19
    • 2020-05-09
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    相关资源
    最近更新 更多