我有两个使用相同自动缩放组的Amazon ELB实例。
我将自动缩放组的运行状况检查类型设置为ELB。
在ASG的每个EC2实例上,我有2个Web应用程序(它们托管在IIS中,但我认为它并不相关)。
一旦我启动并运行了所有内容,我就会关闭其中一个实例上的IIS,以便来自两个ELB的运行状况检查都会因特定的EC2实例而失败。 (ASG仍将实例视为健康,但ELB将其视为停止服务)。
我的ASG
Desired instances: 2
Min: 2
Max: 4
我期待EC2实例被终止,ASG会创建一个新实例,但这不会发生。
有什么想法吗? 感谢
PS:它适用于1个ELB实例和1个ASG,在IIS下只有一个Web应用程序。
答案 0 :(得分:1)
如果有多个与Auto Scaling组关联的负载均衡器,Auto Scaling将通过对每个负载均衡器进行运行状况检查来检查EC2实例的运行状况。对于每个调用,如果Elastic Load Balancing操作返回除InService之外的任何状态,则该实例将被标记为运行状况不佳。 Auto Scaling将实例标记为运行状况不佳后,即使来自其他负载均衡器的后续调用返回同一实例的InService状态,它也将保持该状态。
他们没有特别提到终止操作,但据我所知,这会将实例设置为特定ELB中不健康检查失败的实例 - 但是当其他ELB将其标记为InService时,没有理由终止。
当然,这是AWS,您总是可以使用API编写一些代码来检测这一点,并终止(设置不健康)有问题的实例,该实例适用于一个ELB而不是另一个ELB。
或者更简洁的方法是将其拆分为单独的ASG,每个ASG具有一个ELB。
答案 1 :(得分:1)
默认的ASG运行状况检查类型是EC2实例状态检查。只是尝试将其设置为ELB,以便它将考虑ELB运行状况检查结果以进行扩展/输入。请参阅: http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-add-elb-healthcheck.html