AWS Beanstalk,如何自动重启(或终止)未响应的实例

时间:2017-06-03 16:24:26

标签: amazon-web-services elastic-beanstalk elastic-load-balancer

我的Beanstalk环境带有“Scaling Trigger”,使用“CPUUtilization”,它运行良好。

问题是我无法将此与自动重新启动(或终止)已被视为“OutOfService”的实例一段时间的系统结合起来。

进入“缩放>缩放触发器>触发器测量”,可以选择“UnHealthyHostCount”。但这并不能最佳地解决我的问题,因为它会创建新的实例,只要有一个不健康,这将促使我的环境增长到没有真正原因的限制。另外,我无法结合2 “触发测量”,我需要CPU 1。

当环境中只有一个实例时,问题变得至关重要,并且它变为OutOfService。整个环境终止,触发测量永远不会被触发。

4 个答案:

答案 0 :(得分:2)

如果在Elastic Beanstalk中使用Classic Load Balancer

您可以转到EC2-> Auto Scaling Groups

然后将负载均衡器的Health Check TypeEC2更改为ELB

这样做,一旦您的Elastic Beanstalk实例不响应,它们将被终止。将创建一个新实例来替换终止的实例。

答案 1 :(得分:1)

AWS Elastic Beanstalk使用AWS Auto Scaling来管理实例的创建和终止,包括替换不健康的实例。

AWS Auto Scaling可以与Elastic Beanstalk自动创建的ELB(负载均衡器)集成,以进行运行状况检查。 ELB具有健康检查功能。如果ELB检测到实例运行状况不佳,并且Auto Scaling已配置为依赖于ELB运行状况检查(而不是默认的基于EC2的运行状况检查),则Auto Scaling会自动替换ELB认为不健康的实例。 / p>

所以你要做的就是正确配置ELB运行状况检查(你似乎已经正确配置了它,因为你提到你可以看到实例被标记为 OutOfService ),而你还必须配置Auto Scaling组以使用ELB运行状况检查。

有关此主题的更多详细信息,包括配置所有这些内容的具体步骤,请查看官方文档中的以下2个链接:

这应该可以解决问题。如果您遇到问题,请添加评论,并附上您在尝试此操作后可能获得的任何其他信息。

干杯!

答案 2 :(得分:0)

您可以使用 StatusCheckFailed_Instance 指标设置CloudWatch警报以重启不健康的实例。

有关每个步骤的详细信息,请参阅以下AWS Documentation中的将重新启动操作添加到Amazon CloudWatch警报部分。

答案 3 :(得分:0)

如果您希望Auto Scaling替换其应用程序已停止响应的实例,则可以使用配置文件将Auto Scaling组配置为使用Elastic Load Balancing运行状况检查。以下示例将组设置为使用负载均衡器的运行状况检查以及Amazon EC2状态检查来确定实例的运行状况。

.ebextensions / autoscaling.config示例

Resources:
  AWSEBAutoScalingGroup:
    Type: "AWS::AutoScaling::AutoScalingGroup"
    Properties:
      HealthCheckType: ELB
      HealthCheckGracePeriod: 300

请参阅:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environmentconfig-autoscaling-healthchecktype.html