【问题标题】:UpdatePolicy in AutoScalingGroup failes to update instancesAuto Scaling 组中的 UpdatePolicy 无法更新实例
【发布时间】:2015-10-14 12:32:13
【问题描述】:

我在 CloudFormation 中使用了以下设置来创建自动缩放组:

"myautoscalinggroup": {
  "Type": "AWS::AutoScaling::AutoScalingGroup",
  "UpdatePolicy" : {
    "AutoScalingRollingUpdate" : {
     "MinInstancesInService" : "1",
     "MaxBatchSize" : "2",
     "WaitOnResourceSignals" : "true",
     "PauseTime" : "PT5M"
    }
  },
  "Properties": {
    "AvailabilityZones": [
      "ap-southeast-2b",
      "ap-southeast-2a"
    ],
    "Cooldown": "300",
    "DesiredCapacity": { "Ref" : "InstanceCount"},
    "HealthCheckGracePeriod": "300",
    "HealthCheckType": "EC2",
    "MaxSize": "5",
    "MinSize": "1",
    "VPCZoneIdentifier": { "Ref" : "WebServerSubnets" },
    "LaunchConfigurationName": {
      "Ref": "mylaunchconfiguration"
    },
    "LoadBalancerNames": [
      {
        "Ref": "myloadbalancer"
      }
    ],
    "TerminationPolicies": [
      "Default"
    ]
  }
},
"mylaunchconfiguration": {
  "Type": "AWS::AutoScaling::LaunchConfiguration",
  "Metadata" : {
    "Comment": "Get web page",
    "AWS::CloudFormation::Init" : {
      "config" : {
        "packages" : {
          "yum" : {
            "httpd" : []
          }
        },
        "sources" : { 
          "/var/www/html" :  "address to web-site contents"
        },
        "services" : {
          "sysvinit" : {
            "httpd"    : { "enabled" : "true", "ensureRunning" : "true" }
          }
        }
      }
    }
  },
  "Properties": {
    "ImageId": "ami-fd9cecc7",
    "InstanceType": "t2.micro",
    "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [
      "#!/bin/bash -xe\n",
      "yum update -y aws-cfn-bootstrap\n",
      "/opt/aws/bin/cfn-init -v ",
         "         --stack ", { "Ref" : "AWS::StackName" },
         "         --resource mylaunchconfiguration ",
         "         --region ", { "Ref" : "AWS::Region" }, "\n",

      "/opt/aws/bin/cfn-signal -e $? ",
         "         --stack ", { "Ref" : "AWS::StackName" },
         "         --resource myautoscalinggroup ",
         "         --region ", { "Ref" : "AWS::Region" }, "\n"

    ]]}},
    "KeyName": "myKey",
    "SecurityGroups": [{ "Ref" : "mySecurityGroup" }],
    "BlockDeviceMappings": [
      {
        "DeviceName": "/dev/xvda",
        "Ebs": {
          "VolumeSize": 8
        }
      }
    ]
  }
}

但是,当我使用新的启动配置更新堆栈时,更新策略无法更新实例。但是当我手动终止实例时,AutoScalingGroup 会启动并使用更新的 LaunchConfiguration 启动新实例。知道如何使更新策略生效吗?

谢谢

【问题讨论】:

  • 在您尝试更新启动配置之前,您的实例是否都是“InService”和“Healthy”?而你正在使用WaitOnResourceSignals - 你真的发出信号了吗?
  • 是的,他们都很健康并且在服役。我将 /opt/aws/bin/cfn-signal 放在 mylaunchconfiguration 中以发出信号。您可以在帖子中看到它。
  • 对。我注意到这里没有明显的错误。我的建议是将其剥离到最低限度,只是一个单节点自动扩展组中的简单、简单的 AMI,看看它是否仍然不起作用。如果是这样,您可以开始添加内容并查看它开始失败的位置。
  • 好的,谢谢,我刚刚关注了他们的sample

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


【解决方案1】:

对 LaunchConfiguration 元数据的更改不会触发 AutoScaling UpdatePolicy。您将需要更改 LaunchConfiguration 属性以触发 UpdatePolicy。最简单的方法是对 UserData 进行简单的更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-08
    • 2018-09-22
    • 2016-10-29
    • 1970-01-01
    • 2020-01-08
    • 2022-09-29
    • 2012-09-17
    • 2017-10-07
    相关资源
    最近更新 更多