私有子网EC2无法被公网ELB访问(健康检查失败)求助
私有子网EC2实例ELB健康检查失败排查步骤
1. 核对私有子网路由表配置
- 私有子网必须关联包含NAT网关/实例的路由表,确保EC2实例能正常响应ELB的健康检查请求(包括服务自身的状态校验、必要的出站访问)
- 确认路由表存在
0.0.0.0/0指向NAT网关的路由,且NAT网关部署在同VPC的公有子网内,该公有子网需配置指向Internet网关的路由
2. 验证健康检查核心参数匹配
- 确认ELB健康检查的端口、路径与EC2实例上的服务完全一致:比如EC2 web服务运行在80端口,健康检查就不能设为8080;若健康检查路径为
/health,需确保EC2上该路径能返回200状态码 - 在EC2实例内部执行
curl http://localhost:<端口>/<健康路径>,手动验证服务响应正常
3. 检查安全组规则细节
- EC2实例安全组:除允许ELB安全组访问外,需确认端口范围、协议与健康检查配置匹配(比如健康检查用HTTP协议,就不能只开放TCP 443)
- ELB安全组:出站规则需允许访问EC2的健康检查端口,目标可设置为EC2的安全组或私有IP段
4. 排查网络ACL限制
- 网络ACL作为VPC的附加防火墙,若被修改过需确认:
- 入站规则允许ELB节点IP段(或
0.0.0.0/0,应用负载均衡节点IP动态变化)访问EC2的健康检查端口 - 出站规则允许EC2通过临时端口(1024-65535)返回健康检查响应
- 入站规则允许ELB节点IP段(或
5. 验证VPC内部连通性
- 从同VPC的公有子网EC2实例,尝试ping私有子网EC2的私有IP,或curl其web服务端口,确认内部网络可达
- 若不通,检查EC2安全组是否允许VPC内部流量,或网络ACL是否限制了同VPC内的通信
6. 确认ELB与EC2的可用区匹配
- 确保ELB关联的公有子网,与EC2所在的私有子网完全对应可用区(比如ELB关联us-east-1a、us-east-1b的公有子网,EC2必须部署在这两个可用区的私有子网中),避免跨可用区健康检查的网络问题
内容的提问来源于stack exchange,提问作者Davita
相关产品推荐
相关产品推荐

