【问题标题】:Autoscaling group application load balancer health checks自动缩放组应用程序负载均衡器运行状况检查
【发布时间】:2017-02-22 00:29:14
【问题描述】:

我正在尝试将我的自动缩放组放在 application load balancer(不是经典 ELB)之后,并且想知道我的自动缩放组是否可以使用应用程序负载均衡器对其实例进行健康检查。

我希望应用程序负载均衡器认为不健康的实例自动终止,并让自动缩放组创建一个新实例。

我发现目前发生的情况是我的目标组将实例标记为不健康,但我无法让自动缩放组使用 ALB 健康检查,这可能吗?。

尝试编辑自动扩缩组上的负载平衡器字段:

【问题讨论】:

    标签: amazon-web-services autoscaling


    【解决方案1】:

    是的,你可以。

    负载均衡器 检测到不健康的实例时,它会停止向实例发送流量。它不会终止实例。

    Auto Scaling 检测到运行状况不佳的实例时,它会终止该实例并自动替换它以维持 Desired Capacity。但是,Auto Scaling 执行的默认运行状况检查仅查看虚拟机的底层运行状况——它无法检查应用程序的运行状况。

    幸运的是,您可以在负载平衡和 Auto Scaling 之间结合运行状况检查。这样,如果负载均衡器检测到不正常的应用程序,Auto Scaling 可以终止并替换该实例。

    小心!如果健康检查配置不正确,可能会导致抖动(不断添加和删除实例)。例如,如果指定的预热期不足,Auto Scaling 可能会在实例完全准备好之前终止它。

    参见文档Health Checks for Auto Scaling Instances

    如果您已将负载均衡器附加到 Auto Scaling 组,您可以选择让 Auto Scaling 在确定实例的健康状态时包括 Elastic Load Balancing 健康检查的结果

    注意:

    • 使用经典负载均衡器时,Auto Scaling 使用负载均衡器的运行状况检查
    • 在使用 Application Load Balancer 时,Auto Scaling 使用来自 Target Group 的运行状况检查

    Application Load Balancer 不会出现在 Auto Scaling 组配置的“负载均衡器”列表中。而是选择适当的目标组

    【讨论】:

    • 对不起,如果问题不清楚约翰(我已经更新了),但我使用的是新的应用程序负载均衡器而不是经典的 ELB,我正在努力让我的自动缩放组使用健康检查 ALB,我想知道这是否可能。谢谢
    • 为应用程序负载均衡器 (ALB) 更新了答案。
    • 我的自动缩放组有一个附加的目标组,该目标组正确地报告了一个不健康的实例,但是自动缩放组仍然将此实例报告为健康的(似乎正在使用 ec2 检查)。
    • 您是否使用了 Health Check Type = ELB?考虑到这一点,我想知道 Target Group 的健康检查失败是否会导致实例被替换,因为它可能是通过容器提供的?我们在这里进入了新的领域!
    • 是的,运行状况检查类型 = 自动缩放组上的 ELB。不太确定还可以尝试什么 - 在我看来,该功能目前不存在。感谢您的帮助
    【解决方案2】:

    我已经能够通过创建一个自动缩放组来重现我的问题但在创建时没有附加目标组。

    相反,在自动缩放组运行实例后,我编辑了其设置以将目标组附加到自动缩放组。当我这样做时,实例不会在自动缩放组中正确注册为不健康。

    【讨论】:

    • 这也让我很痛苦。似乎是 AWS 中的一个错误
    • 在这个问题上,文档充其量是很差的——细节上还不清楚;但总体来说非常好。
    • 我也面临一个类似的问题,我的 CodeDeploy 蓝/绿部署会克隆我的 ASG 并丢弃目标组设置,即使我稍后将目标组重新附加到新的 ASG,ELB 运行状况检查不会起作用,因为在我的例子中,根据 ELB,它是“不健康的”,但对于 ASG 来说是“健康的”。您找到任何解决方法了吗?
    猜你喜欢
    • 2019-08-26
    • 2016-06-09
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2020-05-28
    • 2016-04-15
    • 2021-02-21
    相关资源
    最近更新 更多