【发布时间】: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