基于AWS ECS EC2桥接网络的服务发现配置求助
ECS + Cloud Map 服务发现访问失败问题解决
1. 先修正curl命令的格式错误
你执行的curl http://./path存在明显格式问题,./是无效的主机名,这直接触发了Could not resolve host错误。必须使用Cloud Map分配的私有DNS名称来访问目标服务。
2. 获取正确的服务DNS标识
- 控制台查询:进入AWS Cloud Map控制台,找到你的目标命名空间,查看服务
abc(对应xyz服务的服务发现名称)的DNS记录:- SRV记录格式:
_master-3030-tcp._tcp.abc.[你的命名空间域名] - A记录格式(若启用):
abc.[你的命名空间域名]
- SRV记录格式:
- CLI查询:用AWS命令行工具快速获取实例信息:
该命令会返回服务实例的私有IP、动态分配的端口等核心信息。aws servicediscovery discover-instances --namespace-name [你的命名空间名称] --service-name abc
3. 正确的服务访问方式
由于你的任务采用bridge网络+动态主机端口,Cloud Map的SRV记录会自动关联动态端口,推荐两种访问方式:
方式一:使用A记录直接访问(需开启A记录生成)
如果Cloud Map服务配置了生成A记录,可直接用域名访问:
curl http://abc.[你的命名空间域名]/path
方式二:解析SRV记录后访问
先解析SRV记录获取动态端口:
dig +short SRV _master-3030-tcp._tcp.abc.[你的命名空间域名]
返回结果类似0 1 12345 abc.[你的命名空间域名],其中12345是动态分配的主机端口,接着用该端口访问:
curl http://abc.[你的命名空间域名]:12345/path
4. 额外排查要点
- VPC DNS配置:确保EC2实例所在VPC的DNS服务器设置为VPC默认DNS(即VPC网段的第二个IP,比如VPC CIDR为10.0.0.0/16时,DNS为10.0.0.2),否则无法解析Cloud Map私有域名。
- 安全组规则:确认123服务所在EC2实例的安全组,允许访问xyz服务实例安全组的TCP端口(包含动态端口范围,或直接放行3030容器端口对应的安全组规则)。
- 服务注册状态:在ECS控制台检查xyz服务的服务发现状态是否为
正常,确保任务实例已成功注册到Cloud Map。
内容的提问来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

