【问题标题】:AWS Auto scaling groups and non ELB health checksAWS Auto Scaling 组和非 ELB 运行状况检查
【发布时间】:2014-04-20 08:55:06
【问题描述】:

我们的一个云形成堆栈具有自动扩展组,该堆栈具有基于 CPU 的警报,用于确定何时扩展实例。

这很好,但我们最近将它从一个节点扩展到三个节点,其中一个节点无法通过 cfn-init 引导。一旦工作量减少并且该组缩减到一个节点,它就会杀死两个好的实例,并将部分引导的节点作为唯一剩余的实例。这意味着我们会停止处理工作,直到有人登录并重新运行引导过程。

显然这并不理想。当节点不位于 ELB 后面时,通知 Auto Scaling 组节点不健康的最佳方法是什么?

由于这只是初始引导程序,我真正想要的是向 Auto Scaling 组传达此节点发生故障并让它终止并在其位置启动一个新节点。

【问题讨论】:

    标签: amazon-web-services autoscaling


    【解决方案1】:

    一位同事刚刚给我看了http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-configure-healthcheck.html,看起来很方便。

    如果您有自己的健康检查系统,您可以使用来自您的健康检查系统的信息来设置 Auto Scaling 组中实例的健康状态。

    更新 - 我在发布期间设法让它工作。

    我的 ASG 的 UserData 部分如下所示:

    #!/bin/bash -v
    set -x
    export AWS_DEFAULT_REGION=us-west-1
    cfn-init --region us-west-1 --stack bapi-prod --resource LaunchConfiguration -v
    if [[ $? -ne 0 ]]; then
        export INSTANCE=`curl http://169.254.169.254/latest/meta-data/instance-id`
        aws autoscaling set-instance-health \
             --instance-id $INSTANCE \
             --health-status Unhealthy
    fi
    

    【讨论】:

      【解决方案2】:
          cfn-init --region us-west-1 --stack bapi-prod --resource LaunchConfiguration -v
      if [[ $? -ne 0 ]]; then
          export INSTANCE=`curl http://169.254.169.254/latest/meta-data/instance-id`
          aws autoscaling set-instance-health \
               --instance-id $INSTANCE \
               --health-status Unhealthy
      fi
      

      也可以作为单行。例如,我在 Terraform 中使用以下内容:

      runcmd:
       - /tmp/runcmd-puppet.sh || { export INSTANCE=`curl http://169.254.169.254/latest/meta-data/instance-id`; aws autoscaling --region eu-west-1 set-instance-health --instance-id $INSTANCE --health-status Unhealthy; }
      

      【讨论】:

        猜你喜欢
        • 2020-10-28
        • 2017-04-23
        • 1970-01-01
        • 2018-07-11
        • 2018-03-29
        • 2021-06-26
        • 2017-07-24
        • 2018-03-25
        • 1970-01-01
        相关资源
        最近更新 更多