实例已经连续失败至less不健康阈值健康检查的次数

我正在尝试自动缩放当前的实例,现在正在运行一个中型实例,并使用小实例自动缩放。 我使用了命令行工具来configuration设置,这是我用来扩展的configuration,而且我运行的是至less一个实例,这意味着还有一个实例,并且已经连接到负载平衡器。

s-create-auto-scaling-group groupname -launch-configuration launchconfig -availability-zones ap-southeast-1a -min-size 1 -max-size 5 -load-balancers prod

但是当我检查负载平衡器时,它说“停止服务”原因“实例至less连续失败健康检查的不健康阈值数”。 我怎样才能解决这个问题,使用它的公共DNS,我无法从实例得到任何回应,也无法SSH,因为键值对没有附加到新创build的实例。

什么问题,我该如何解决这个问题。

请帮助我解决这个问题,因为我已经从这个问题上解决了近两天了。

as-describe-launch-configs --show-long --headers testLC,ami-e8c4bdba,t1.micro,(nil),(nil),(nil),(nil),default,2012-02-03T07:14:54.461Z,true,arn:aws:autoscaling:ap-southeast-1:346266270015:launchConfiguration:175a16db-1f6a-4514-9233-ac7cb34bca90:launchConfigurationName/testLC as-describe-auto-scaling-groups --show-long --headers testASG,testLC,ap-southeast-1a,2012-02-03T07:19:10.706Z,prod,EC2,1,5,1,300,0,(nil),(nil),arn:aws:autoscaling:ap-southeast-1:346266270015:autoScalingGroup:c4b584d0-bac4-4507-b972-4fc2b1bc53ac:autoScalingGroupName/testASG,(nil) as-describe-auto-scaling-instances i-43796716 testASG ap-southeast-1a InService HEALTHY testLC elb-describe-lbs --headers --show-long prod,prod-11719395.ap-southeast-1.elb.amazonaws.com,prod-11719395.ap-southeast-1.elb.amazonaws.com,Z1WI8VXHPB1R38,"{interval=120,target=HTTP:80/user/sign_in/,timeout=30,healthy-threshold=5,unhealthy-threshold=3}",ap-southeast-1a,(nil),(nil),"i-495dda1c, i-43796716","{protocol=HTTP,lb-port=80,instance-protocol=HTTP,instance-port=80,policies=AWSConsolePolicy-1}",(nil),"{policy-name=AWSConsolePolicy-1,expiration-period=180}","{owner-alias=amazon-elb,group-name=amazon-elb-sg}",(nil),2012-02-01T10:36:08.810Z elb-describe-instance-health loadbalancername --headers --show-long INSTANCE_ID,i-495dda1c,InService,N/A,N/A INSTANCE_ID,i-43796716,OutOfService,Instance has failed at least the UnhealthyThreshold number of health checks consecutively.,Instance 

在这里需要考虑许多因素。 首先,解决最有限的问题 – 缺lessSSH访问。

由于您以前的启动configuration没有指定密钥对,因此您将没有有效的凭据来访问该实例。 不幸的是,初始密钥对不能在实例启动后添加。

为了解决这个问题,除了你之前通过的所有参数之外,你还必须创build一个新的启动configuration,传递--key--key参数。 --key要使用的密钥对的名称,而--group表示安全组名(如果不在VPC中)或ID。

在无法访问实例的情况下,控制台日志可以帮助您validation实例是否成功启动。 一个常见的问题是由于缺less卷而导致引导失败(特别是在引导较小的实例types时,试图挂载仅存在于较大实例types上的临时卷)。

需要注意的一点是,如果更改正在运行的实例,则AMI不会更新。 您必须明确地创build新的图像。 因此,如果您尝试使用您当前在自定义实例上使用的相同AMI启动新实例,则很可能只是启动其中一个默认AMI,而不是您自定义的AMI。

使用ec2-describe-images来确定ec2-describe-images的块设备映射 – 以及卷所基于的快照 – 这将validation您将挂载一个EBS卷,该卷具有内置的自定义内容。

如果您没有最新的AMI用于自动调节:

  • 创buildEBS卷的快照
  • ec2-register -n IMAGE_NAME -s SNAPSHOT_ID创build一个AMI
    • 如果要附加额外的EBS卷,请通过添加--block-device-mapping-b )参数(例如-b /dev/xvdf=SNAP_ID )来指定这些卷。
  • validation您是否具有与ec2-describe-images正确的块设备映射

一旦你有一个最新的AMI,你需要创build一个新的启动configuration,将使用这个AMI。 如果需要,您可以将其他块设备映射传递给该命令。 使用as-create-launch-config ,将新的AMI和之前使用的所有parameter passing给它。

最后,你必须更新你的自动调节组。 该组与特定的启动configuration关联 – 新的启动configuration将不会自动检测到,并且不会自动缩放组,直到您明确地将其关联。 使用as-update-auto-scaling-group GROUP_NAME --launch-configuration CONFIG_NAME进行此更改。

一旦更改完成,您可以使用as-execute-policy命令来模拟自动调整事件。

请记住给你的实例几分钟启动 – 如果你的ELB显示实例不健康,你可能想要增加自动--grace-period组的--grace-period