自动缩放组应用程序负载均衡器健康检查

Autoscaling group application load balancer health checks

我试图将我的自动缩放组放在 application load balancer(不是经典的 ELB)后面,并且想知道我的自动缩放组是否可以使用应用程序负载均衡器来检查其实例的运行状况。

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

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

正在尝试编辑自动缩放组上的负载均衡器字段:

是的,你可以。

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

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

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

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

查看文档 Health Checks for Auto Scaling Instances:

If you have attached a load balancer to your Auto Scaling group, you can optionally have Auto Scaling include the results of Elastic Load Balancing health checks when determining the health status of an instance.

注:

  • 当使用 Classic Load Balancer 时,Auto Scaling 使用 Load Balancer 的运行状况检查
  • 使用 Application Load Balancer 时,Auto Scaling 使用来自目标组
  • 的运行状况检查

Application Load Balancer 不会出现在 Auto Scaling 组配置的 "Load Balancer" 列表中。相反,select 适当的 目标组

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

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