私有子网EC2实例在ALB中显示不健康问题求助
ALB目标组EC2实例不健康排查方案
1. 目标组健康检查配置验证
- 确认健康检查的协议/端口和EC2上Apache监听的一致,比如Apache默认用80端口,健康检查就得设为HTTP:80
- 检查健康检查路径是否有效,比如默认的
/或者自定义的/health.html,必须保证EC2上该路径能返回200状态码 - 验证健康检查的超时、间隔阈值是否合理,要是实例启动慢,适当调大超时和间隔时间
2. 安全组规则检查
- EC2实例安全组:必须允许来自ALB所在安全组(或整个VPC的CIDR段)的健康检查端口流量,同时要允许实例自身回环(127.0.0.1)的流量,保证服务能自检
- ALB安全组:要允许出站到EC2实例健康检查端口的流量,入站规则按需配置外部访问权限
- 别依赖默认安全组,明确配置规则,避免默认规则被修改导致流量阻断
3. 网络连通性验证
- 私有子网的路由表必须配置NAT网关,确保EC2实例能通过UserData下载Apache包,要是NAT没配,Apache可能压根没安装成功
- 虽然VPC DNS主机名禁用,但DNS解析已启用,确保实例能正常解析内部地址(健康检查用私有IP的话影响不大,但还是要确认)
- 找同VPC的公有子网堡垒机,用
curl <EC2私有IP>:<健康检查端口><路径>测试,看能不能返回200,确认服务是否真的在运行
4. EC2实例本身状态验证
- 查看EC2系统日志,确认UserData是否执行成功,Apache有没有正常启动:
或者看错误日志排查问题:sudo systemctl status httpdcat /var/log/httpd/error_log - 确认目标组关联的是EC2正确的私有IP,有没有选错实例
- 检查实例CPU、内存使用率,别是资源耗尽导致服务挂了
5. ALB配置验证
- 确认ALB部署在至少两个可用区的公有子网,且目标组里的EC2实例所在私有子网和ALB的可用区对应
- 检查ALB状态是否为“active”,有没有异常报错
- 确认目标组类型是实例类型(用私有IP关联的话),别选错成IP类型
内容的提问来源于stack exchange,提问作者Rad4
相关产品推荐
相关产品推荐

