通过Internal Load Balancer连接前后端服务时遇ERR_NAME_NOT_RESOLVED问题
问题描述
前端与后端服务单独运行均正常,但相互通信时持续出现ERR_NAME_NOT_RESOLVED错误。已确认以下事项:
- 服务发现全部连通
- 所有安全组已开放对应端口
- 健康检查状态均为
healthy
仅将**内部负载均衡器(Internal Load Balancer)改为允许0.0.0.0/0互联网流量的公网负载均衡器(Public Load Balancer)**时,前后端才可正常通信。架构基于AWS ECS Fargate微服务集群,采用常见的ECS Fargate微服务部署架构。
排查与解决建议
验证内部DNS解析配置
- 确认前端服务使用内部负载均衡器的私有DNS名称通信,而非公网域名或IP。公网LB的域名可被公网DNS解析,但内部LB的私有域名仅在VPC内部生效。
- 登录前端Fargate容器,执行
nslookup <内部LB私有域名>命令,检查能否解析出私有IP。若解析失败,需确认VPC的DNS服务器配置为AWS默认DNS(通常是VPC网段第二个IP,如10.0.0.2),而非自定义DNS。
检查VPC DNS相关配置
- 确保内部LB所在VPC已开启
DNS主机名和DNS解析功能(在VPC控制台属性页查看)。未开启的话,内部LB的私有域名无法被VPC内的容器解析。 - 若用Route 53私有托管区映射内部LB的自定义域名,需确认私有托管区已与前端服务所在VPC正确关联。
- 确保内部LB所在VPC已开启
核对服务发现与LB的关联
- 检查ECS服务的服务发现配置,确认命名空间与内部LB的私有域名处于同一DNS域,或服务发现记录正确指向内部LB端点。
- 优先使用内部LB私有域名作为通信地址,避免直接使用服务发现SRV记录时出现配置疏漏。
排查容器网络模式
- 前端Fargate任务若用
awsvpc网络模式(默认),需确认任务子网与内部LB子网属于同一VPC,且子网路由表允许访问VPC内部DNS服务器和LB IP段。 - 检查容器定义中的
dnsServers参数,确认未覆盖VPC默认DNS配置。
- 前端Fargate任务若用
内容的提问来源于stack exchange,提问作者SooJung
相关产品推荐
相关产品推荐

