我的Beanstalk环境带有“Scaling Trigger”,使用“CPUUtilization”,它运行良好。
问题是我无法将此与自动重新启动(或终止)已被视为“OutOfService”的实例一段时间的系统结合起来。
进入“缩放>缩放触发器>触发器测量”,可以选择“UnHealthyHostCount”。但这并不能最佳地解决我的问题,因为它会创建新的实例,只要有一个不健康,这将促使我的环境增长到没有真正原因的限制。另外,我无法结合2 “触发测量”,我需要CPU 1。
当环境中只有一个实例时,问题变得至关重要,并且它变为OutOfService。整个环境终止,触发测量永远不会被触发。
答案 0 :(得分:2)
如果在Elastic Beanstalk中使用Classic Load Balancer
。
您可以转到EC2
-> Auto Scaling Groups
。
然后将负载均衡器的Health Check Type
从EC2
更改为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