You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Auto Scaling组实例无法注册ALB且启动后几秒即终止的修复与调试

问题修复与调试指南

一、模板问题修复

1. 修正实例安全组的VPC关联问题

enbalessh安全组未指定VpcId,会默认创建在默认VPC中,但实例部署在自定义VPCMyVpc内,导致实例无法关联该安全组,直接启动失败。修改enbalessh资源:

enbalessh:
  Type: AWS::EC2::SecurityGroup
  Properties:
    GroupDescription: enable-ssh
    VpcId: !Ref MyVpc  # 添加该行关联自定义VPC
    SecurityGroupIngress:
      - IpProtocol: tcp
        FromPort: '22'
        ToPort: '22'
        CidrIp: "0.0.0.0/0"  
      - IpProtocol: tcp
        FromPort: 80
        ToPort: 80
        CidrIp: "0.0.0.0/0"

2. 修复UserData脚本权限问题

启动httpd服务的命令缺少sudo,普通用户无权限执行systemctl操作,修改UserData:

UserData: 
  Fn::Base64: |
    #!/bin/bash
    sudo yum -y install httpd
    sudo touch /var/www/html/index.html
    echo "webserver v1" > /var/www/html/index.html
    sudo hostname >> /var/www/html/index.html
    sudo ifconfig >> /var/www/html/index.html
    sudo systemctl start httpd.service  # 添加sudo
    sudo systemctl enable httpd.service  # 可选,确保开机自启

3. 处理Windows AMI的UserData适配问题

当前模板仅为Linux实例配置了初始化脚本,若选择Windows AMI,实例无法安装Web服务,必然健康检查失败。需添加条件分支适配Windows:

Launchtemplate:
  Type: AWS::EC2::LaunchTemplate
  Properties:
    LaunchTemplateData:
      ImageId: !If [SelectImage, !FindInMap [ FreeTier, Linux, HVM64 ], !FindInMap [ FreeTier, Windows, HVM64 ]]  
      InstanceType: t2.micro
      KeyName: cfn-putty
      UserData: !If
        - SelectImage
        - Fn::Base64: |
            #!/bin/bash
            sudo yum -y install httpd
            sudo touch /var/www/html/index.html
            echo "webserver v1" > /var/www/html/index.html
            sudo hostname >> /var/www/html/index.html
            sudo ifconfig >> /var/www/html/index.html
            sudo systemctl start httpd.service
            sudo systemctl enable httpd.service
        - Fn::Base64: |
            <powershell>
            Install-WindowsFeature -name Web-Server -IncludeManagementTools
            New-Item -Path C:\inetpub\wwwroot\index.html -ItemType File -Value "webserver v1`n$env:COMPUTERNAME`n$(Get-NetIPAddress)"
            Start-Service W3SVC
            Set-Service -Name W3SVC -StartupType Automatic
            </powershell>
      SecurityGroups:
        - !Ref enbalessh

4. 调整健康检查宽限期

当前HealthCheckGracePeriod: 120可能不足以完成Web服务安装启动,建议延长至300秒:

LauncConfig:
  Type:  AWS::AutoScaling::AutoScalingGroup
  Properties:
    DefaultInstanceWarmup: 60
    HealthCheckGracePeriod: 300  # 延长至5分钟
    HealthCheckType: ELB
    # 其余属性保持不变

5. 修正目标组注销延迟参数

deregistration_delay.timeout_seconds设置为3000秒(50分钟)过长,建议改为默认值300秒(5分钟):

MyTargetGroup:
  Type: AWS::ElasticLoadBalancingV2::TargetGroup
  Properties:
    # 其余属性保持不变
    TargetGroupAttributes:
      - Key: load_balancing.algorithm.type
        Value: round_robin
      - Key: "deregistration_delay.timeout_seconds"
        Value: "300"  # 修改为300秒

二、最佳调试方式

  • 查看Auto Scaling活动历史:在EC2控制台的Auto Scaling组详情中,查看「活动」标签页,明确实例终止原因(如「实例未通过ELB健康检查」「实例启动失败」)。
  • 检查EC2实例系统日志:在EC2控制台选中实例,点击「监控」→「获取系统日志」,查看UserData脚本的执行报错信息(比如yum安装失败、权限不足)。
  • 验证目标组健康状态:在ELB控制台的目标组详情中,查看「目标」标签页,确认实例的健康检查状态,若显示「不健康」,可手动访问实例的80端口验证服务是否正常。
  • 排查网络与安全组:检查实例安全组是否允许ALB的流量访问80端口,以及实例是否有互联网访问权限(能否下载yum包)。

内容的提问来源于stack exchange,提问作者Markus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:48:09