AWS - 自动调度未按指定启动/终止实例

时间:2016-11-03 21:11:15

标签: amazon-web-services autoscaling

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

enter image description here

正如你所看到的,我试图让这个小组拥有5到10个健康实例。最大和最小实例数已设置为20和2.

我只运行2个实例(最小值)。

警报定义为:

  • 平服务器太健康 enter image description here
  • 平服务器不是健康的,足够的 enter image description here

Load Balancer的警报似乎正常工作:

enter image description here

但扩展组未启动新实例。我已经尝试过相反地设置警报(我不确定它们是从真实到虚假还是从虚假变为真时触发)并导致20个实例(最大值)

1 个答案:

答案 0 :(得分:7)

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

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

Elastic Beanstalk auto scaling configuration

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

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

HealthyHostCount指标表示已通过Elastic Load Balancing 运行状况检查的服务器数量。如果实例未通过运行状况检查,则Load Balancer会停止发送请求,但会继续执行运行状况检查。如果实例再次变为健康状态,Load Balancer将继续向该服务器发送请求。可以将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运行状况检查(这将确保更换包含不健康应用程序的实例)
  • 使用扩展策略根据工作负载添加/删除实例,而不是基于运行状况
  • 信任系统。它有效!