我的Beanstalk环境带有“Scaling Trigger”,使用“CPUUtilization”,效果很好。
问题是我无法将此与自动重新启动(或终止)已被视为“OutOfService”一段时间的实例的系统相结合。
进入“Scaling> Scaling Trigger> Trigger measurement”,可以选择“UnHealthyHostCount”。但这并不能最佳地解决我的问题,因为它会创建新的实例,只要有一个不健康,这将促使我的环境增长到没有真正原因的限制。此外,我无法结合2“触发测量”,我需要CPU 1。
当环境中只有一个实例时,问题变得至关重要,并且它变为OutOfService。整个环境终止,触发测量永远不会被触发。
如果你在Elastic Beanstalk中使用Classic Load Balancer
。
你可以去EC2
- > Auto Scaling Groups
。
然后将负载平衡器的Health Check Type
从EC2
更改为ELB
。
通过这样做,Elastic Beanstalk的实例将在它们没有响应时终止。将创建一个新实例来替换已终止的实例。
AWS Elastic Beanstalk使用AWS Auto Scaling来管理实例的创建和终止,包括替换不健康的实例。
AWS Auto Scaling可以与Elastic Beanstalk自动创建的ELB(负载均衡器)集成,以进行运行状况检查。 ELB具有健康检查功能。如果ELB检测到实例运行状况不佳,并且Auto Scaling已配置为依赖于ELB运行状况检查(而不是默认的基于EC2的运行状况检查),则Auto Scaling会自动替换ELB认为不健康的实例。
因此,您所要做的就是正确配置ELB运行状况检查(您似乎已经正确配置了它,因为您提到您可以看到实例被标记为OutOfService),并且您还必须配置Auto Scaling组以使用ELB健康检查。
有关此主题的更多详细信息,包括配置所有这些内容的具体步骤,请查看官方文档中的以下2个链接:
这应该可以解决问题。如果您遇到问题,请在尝试此操作后添加评论以及您可能拥有的任何其他信息。
干杯!
您可以使用StatusCheckFailed_Instance指标设置CloudWatch警报以重新启动不健康的实例。
有关每个步骤的详细信息,请参阅以下AWS Documentation中的“将重新启动操作添加到Amazon CloudWatch警报”部分。