AWS - 自动缩放不是指定的 launching/killing 个实例

AWS - Autoscaling not launching/killing instances as specified

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

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

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

报警定义为:

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

但是伸缩组没有启动新实例。我试过以相反的方式设置警报(我不确定当它们从真变为假或从假变为真时它们会被触发)并且导致 20 个实例(最大值)

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

当 Elastic Beanstalk 创建 "Load balancing, auto scaling" 环境时,它会为您创建 Auto Scaling 组。作为这些配置的一部分,您可以指定要在 Auto Scaling 组中启动的 minimummaximum 实例数:

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

扩展策略然后用于调整所需容量。扩展策略应使用 "load" 的某种度量来确定何时添加或删除实例,例如 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 应用程序 不健康并且可以自动替换失败的实例(或失败应用程序的实例)。

您声明您的目标是 "to get the group to have between 5 and 10 healthy instances in permanence"。这是 Auto Scaling 的工作,尤其是当它已配置为使用 Elastic Load Balancing 运行状况检查时。扩展策略的工作是根据工作负载确定何时 add/remove 个实例。 不应将扩展策略用作替换不健康实例的方法。

所以,我推荐:

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