【问题标题】:Amazon multiple ELB instances using same Auto scaling group使用同一个 Auto Scaling 组的 Amazon 多个 ELB 实例
【发布时间】:2014-06-08 00:46:07
【问题描述】:

我有 2 个使用同一个 Auto Scaling 组的 Amazon ELB 实例。

我将 Auto Scaling 组的健康检查类型设置为 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 应用程序。

【问题讨论】:

  • 看起来像一个角落案例。有什么理由让你在同一台服务器上安装两个 Web 应用程序?

标签: amazon-web-services amazon-ec2 amazon-elb


【解决方案1】:

默认 ASG 运行状况检查类型是 EC2 实例状态检查。只需尝试将其设置为 ELB,以便它会考虑 ELB 健康检查结果以进行横向扩展/横向扩展。请参阅: http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-add-elb-healthcheck.html

【讨论】:

    【解决方案2】:

    来自documentation

    如果有多个负载均衡器与您的 Auto Scaling 组关联,Auto Scaling 将通过对每个负载均衡器进行运行状况检查调用来检查您的 EC2 实例的运行状况。对于每次调用,如果 Elastic Load Balancing 操作返回 InService 以外的任何状态,实例将被标记为不正常。 Auto Scaling 将实例标记为不健康后,它将保持该状态,即使来自其他负载均衡器的后续调用返回同一实例的 InService 状态。

    他们没有特别提到终止操作,但据我了解,这将在特定 ELB 中将实例设置为不健康,但由于其他 ELB 将其标记为 InService,因此没有理由终止。

    当然,这是 AWS,您始终可以使用 API 编写一些代码来检测这一点,并终止(设置不健康)有问题的实例,该实例适用于一个 ELB 而不是另一个。

    或者更简洁的方法是将其拆分为单独的 ASG,每个 ASG 都有一个 ELB。

    【讨论】:

    • 感谢您的回答。我已经在 Auto Scaling 组上将运行状况检查设置为 ELB,如果我使用只有 1 个 ELB 实例的 ASG,它就可以正常工作。但是,如果我在每个 EC2 实例上将它与 2 个 ELB 实例和 2 个单独的 Web 应用程序一起使用,ASG 不会终止不响应健康检查的机器。
    猜你喜欢
    • 2018-03-29
    • 2019-06-10
    • 2016-01-17
    • 2012-03-06
    • 2018-07-11
    • 1970-01-01
    • 2015-10-05
    • 2017-04-23
    • 2012-12-16
    相关资源
    最近更新 更多