收到 1 个 SUCCESS 信号中的 0 个。无法满足 100% MinSuccessfulInstancesPercent 要求

收到 1 个 SUCCESS 信号中的 0 个。无法满足 100% MinSuccessfulInstancesPercent 要求

我在云形成中运行此模板以在 ubuntu-18.04 机器中创建自动缩放,它将自动回滚由此模板创建的所有实例并给出类似的错误。

收到 1 个 SUCCESS 信号中的 0 个。无法满足 100% MinSuccessfulInstancesPercent 要求以下资源创建失败:[WebServerGroup]。用户请求回滚。

{
    "AWSTemplateFormatVersion": "2010-09-09",

    "Parameters": {
        "VpcId": {
            "Type": "AWS::EC2::VPC::Id",
            "Description": "VpcId of your existing Virtual Private Cloud (VPC)",
            "ConstraintDescription": "must be the VPC Id of an existing Virtual Private Cloud."
        },
        "Subnets": {
            "Type": "List<AWS::EC2::Subnet::Id>",
            "Description": "The list of SubnetIds in your Virtual Private Cloud (VPC)"
        },
        "InstanceType": {
            "Description": "WebServer EC2 instance type",
            "Type": "String",
            "Default": "t2.small",
            "AllowedValues": [
                "t1.micro",
                "t2.nano",
                "t2.micro",
                "t2.small",
                "t2.medium",
                "t2.large",
                "m1.small",
                "m1.medium",
                "cg1.4xlarge"
            ],
            "ConstraintDescription": "must be a valid EC2 instance type."
        },
"WebServerCapacity": {
      "Default": "2",
      "Description": "The initial number of WebServer instances",
      "Type": "Number",
      "MinValue": "1",
      "MaxValue": "10",
      "ConstraintDescription": "must be between 1 and 10 EC2 instances."
    },
        "KeyName": {
            "Description": "The EC2 Key Pair to allow SSH access to the instances",
            "Type": "AWS::EC2::KeyPair::KeyName",
            "ConstraintDescription": "must be the name of an existing EC2 KeyPair."
        },
        "SSHLocation": {
            "Description": "The IP address range that can be used to SSH to the EC2 instances",
            "Type": "String",
            "MinLength": "9",
            "MaxLength": "18",
            "Default": "0.0.0.0/0",
            "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})",
            "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x."
        }
    },

    "Resources": {
      "WebServerScaleUpPolicy": {
            "Type": "AWS::AutoScaling::ScalingPolicy",
            "Properties": {
                "AdjustmentType": "ChangeInCapacity",
                "AutoScalingGroupName": {
                    "Ref": "WebServerGroup"
                },
                "Cooldown": "60",
                "ScalingAdjustment": 1
            }
        },
        "WebServerScaleDownPolicy": {
            "Type": "AWS::AutoScaling::ScalingPolicy",
            "Properties": {
                "AdjustmentType": "ChangeInCapacity",
                "AutoScalingGroupName": {
                    "Ref": "WebServerGroup"
                },
                "Cooldown": "60",
                "ScalingAdjustment": -1
            }
        },
        "CPUAlarmHigh": {
            "Type": "AWS::CloudWatch::Alarm",
            "Properties": {
                "AlarmDescription": "Scale-up if CPU > 70% for 5 minutes",
                "MetricName": "CPUUtilization",
                "Namespace": "AWS/EC2",
                "Statistic": "Average",
                "Period": 300,
                "EvaluationPeriods": 2,
                "Threshold": 70,
                "AlarmActions": [{
                    "Ref": "WebServerScaleUpPolicy"
                }],
                "Dimensions": [{
                    "Name": "AutoScalingGroupName",
                    "Value": {
                        "Ref": "WebServerGroup"
                    }
                }],
                "ComparisonOperator": "GreaterThanThreshold"
            }
        },
        "CPUAlarmLow": {
            "Type": "AWS::CloudWatch::Alarm",
            "Properties": {
                "AlarmDescription": "Scale-down if CPU < 40% for 5 minutes",
                "MetricName": "CPUUtilization",
                "Namespace": "AWS/EC2",
                "Statistic": "Average",
                "Period": 300,
                "EvaluationPeriods": 2,
                "Threshold": 40,
                "AlarmActions": [{
                    "Ref": "WebServerScaleDownPolicy"
                }],
                "Dimensions": [{
                    "Name": "AutoScalingGroupName",
                    "Value": {
                        "Ref": "WebServerGroup"
                    }
                }],
                "ComparisonOperator": "LessThanThreshold"
            }
        },
           "ApplicationLoadBalancer": {
            "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
            "Properties": {
            "Name": "elb-test",
            "Scheme": "internet-facing",
            "IpAddressType": "ipv4",
            "Type": "application",
                "Subnets": {
                    "Ref": "Subnets"
                }
            }
        },
        "ALBListener": {
            "Type": "AWS::ElasticLoadBalancingV2::Listener",
            "Properties": {
                "DefaultActions": [{
                    "Type": "forward",
                    "TargetGroupArn": {
                        "Ref": "ALBTargetGroup"
                    }
                }],
                "LoadBalancerArn": {
                    "Ref": "ApplicationLoadBalancer"
                },
                "Port": 80,
                "Protocol": "HTTP"
            }
        },
        "ALBTargetGroup": {
            "Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
            "Properties": {
                "Name": "ELB-Group",
                "HealthCheckIntervalSeconds": 30,
                "HealthCheckTimeoutSeconds": 5,
                "HealthyThresholdCount": 3,
                "Port": 80,
                "Protocol": "HTTP",
                "TargetType": "instance",
                "UnhealthyThresholdCount": 5,
                "VpcId": {
                    "Ref": "VpcId"
                }
            }
        },
        "WebServerGroup": {
            "Type": "AWS::AutoScaling::AutoScalingGroup",
            "Properties": {
                "VPCZoneIdentifier": {
                    "Ref": "Subnets"
                },
                "HealthCheckGracePeriod": 300,
                "LaunchConfigurationName": {
                    "Ref": "LaunchConfig"
                },
                "MinSize": "1",
                "MaxSize": "8",
                    "DesiredCapacity": {
                  "Ref": "WebServerCapacity"
                },
                "TargetGroupARNs": [{
                    "Ref": "ALBTargetGroup"
                }]
            },
      "CreationPolicy": {
        "ResourceSignal": {
          "Timeout": "PT5M",
          "Count": {
            "Ref": "WebServerCapacity"
          }
        }
      },
      "UpdatePolicy": {
        "AutoScalingRollingUpdate": {
          "MinInstancesInService": 1,
          "MaxBatchSize": 1,
          "PauseTime": "PT5M",
          "WaitOnResourceSignals": true
        }
      }
        },
        "LaunchConfig": {
            "Type": "AWS::AutoScaling::LaunchConfiguration",
            "Metadata" : {
            "Comment" : "Install a simple application",
            "AWS::CloudFormation::Init" : {
              "full_install" : [ "install_and_enable_cfn_hup" ]
          },
          "install_and_enable_cfn_hup" : {
            "files" : {
                        "/etc/cfn/cfn-hup.conf" : {
                          "content" : { "Fn::Join" : ["", [
                            "[main]\n",
                            "stack=", { "Ref" : "AWS::StackId" }, "\n",
                            "region=", { "Ref" : "AWS::Region" }, "\n"
                          ]]},
                          "mode"    : "000400",
                          "owner"   : "root",
                          "group"   : "root"
                        },
                        "/etc/cfn/hooks.d/cfn-auto-reloader.conf" : {
                          "content": { "Fn::Join" : ["", [
                            "[cfn-auto-reloader-hook]\n",
                            "triggers=post.update\n",
                            "path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n",
                            "action=/opt/aws/bin/cfn-init -v ",
                            "         --stack ", { "Ref" : "AWS::StackName" },
                            "         --resource LaunchConfig",
                            "         --configsets full_install ",
                            "         --region ", { "Ref" : "AWS::Region" }, "\n",
                            "runas=root\n"
                          ]]}
                        },
                       "/lib/systemd/system/cfn-hup.service": {
                            "content": { "Fn::Join" : ["", [
                            "[Unit]\n",
                            "Description=cfn-hup daemon\n\n",
                            "[Service]\n",
                            "Type=simple\n",
                            "ExecStart=/opt/aws/bin/cfn-hup\n", 
                            "Restart=always\n\n",
                            "[Install]\n",
                            "WantedBy=multi-user.target"]]}
                             }
                  },  
            "commands" : {
                  "01enable_cfn_hup" : {
                      "command" : "systemctl enable cfn-hup.service"
                  },
                  "02start_cfn_hup" : {
                      "command" : "systemctl start cfn-hup.service"
                  }
              }
           }
        },
            "Properties": {
                "KeyName": {
                    "Ref": "KeyName"
                },
                "ImageId": "ami-00932e4c143f3fdf0",
                "SecurityGroups": [{
                    "Ref": "InstanceSecurityGroup"
                }],
                "InstanceType": {
                    "Ref": "InstanceType"
                },
                "UserData"       : { "Fn::Base64" : { "Fn::Join" : ["", [
             "#!/bin/bash -xe\n",
             "apt-get update -y\n",
             "apt-get install -y python-setuptools\n",
             "mkdir -p /opt/aws/bin\n",
             "python /usr/lib/python2.7/dist-packages/easy_install.py --script-dir /opt/aws/bin https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz\n",
              "/opt/aws/bin/cfn-init -v ",
             "         --stack ", { "Ref" : "AWS::StackName" },
             "         --resource LaunchConfig",
             "         --configsets full_install ",
             "         --region ", { "Ref" : "AWS::Region" }, "\n",

             "/opt/aws/bin/cfn-signal -e $? ",
             "         --stack ", { "Ref" : "AWS::StackName" },
             "         --resource WebServerGroup",
             "         --region ", { "Ref" : "AWS::Region" }, "\n"
            ]]}}}
            },
        
        
        "InstanceSecurityGroup": {
            "Type": "AWS::EC2::SecurityGroup",
            "Properties": {
                "GroupDescription": "Enable SSH access and HTTP from the load balancer only",
                "SecurityGroupIngress": [{
                        "IpProtocol": "tcp",
                        "FromPort": 22,
                        "ToPort": 22,
                        "CidrIp": {
                            "Ref": "SSHLocation"
                        }
                    },
                    {
                        "IpProtocol": "tcp",
                        "FromPort": 80,
                        "ToPort": 80,
                        "SourceSecurityGroupId": {
                            "Fn::Select": [
                                0,
                                {
                                    "Fn::GetAtt": [
                                        "ApplicationLoadBalancer",
                                        "SecurityGroups"
                                    ]
                                }
                            ]
                        }
                    }
                ],
                "VpcId": {
                    "Ref": "VpcId"
                }
            }
        }
    },
    "Outputs": {
        "URL": {
            "Description": "The URL of the website",
            "Value": {
                "Fn::Join": [
                    "",
                    [
                        "http://",
                        {
                            "Fn::GetAtt": [
                                "ApplicationLoadBalancer",
                                "DNSName"
                            ]
                        }
                    ]
                ]
            }
        }
    }
}

因此,如果我使用此模板或 CFN 命令运行有任何问题,请告诉我

答案1

  1. 简化它。删除所有 ALB 和 CloudWatch 扩展内容以开始。
  2. 禁用(删除)CreationPolicyUpdatePolicy以防止出现您看到的错误。删除该选项后,ASG 将不会等待信号。删除该选项后,实例应该可以启动并保持运行。
  3. 通过 SSH 连接到实例并检查您在/var/log/cloud-init.log和中看到的错误/var/log/cloud-init-output.log- 这将为您提供有关失败原因以及无法将成功发送cfn-signal回 AWS 的线索。
  4. 解决问题并恢复上面的#1和#2并重试。

希望有帮助:)

相关内容