如何配置VPC安全组实现两个ECS Docker容器互通
解决Grafana与Prometheus通过安全组互访的问题
简化安全组规则配置
你当前的规则配置冗余且不必要,按照实际访问需求调整即可:
Prometheus安全组(PromSG)
只需要配置入站规则:
- 协议:TCP
- 端口:9090
- 源:Grafana所在的安全组(GrafanaSG)
这一步允许Grafana侧发起的对Prometheus 9090端口的访问请求
Grafana安全组(GrafanaSG)
如果不需要Prometheus主动推送数据(比如告警),无需额外配置针对PromSG的入站规则;如果有推送需求,再添加:
- 协议:TCP
- 端口:3000
- 源:Prometheus所在的安全组(PromSG)
你已经配置了允许所有出站流量的规则,所以不需要再单独添加到PromSG的出站规则,状态化安全组会自动允许请求的响应流量返回
排查其他可能的失效原因
- 容器端口映射验证:确认ECS容器是否已将Grafana的3000端口、Prometheus的9090端口正确映射到ECS实例的对应端口(或使用主机网络模式),否则即使安全组放行,请求也无法到达容器。
- VPC内部连通性:在两个ECS实例上互相ping对方的私有IP,确认VPC内网络可达;也可以用
telnet <目标私有IP> <端口>测试端口连通性,判断是安全组问题还是网络/容器配置问题。 - 安全组优先级与冲突规则:检查安全组是否存在优先级更高的拒绝规则,或者是否有其他绑定的安全组限制了流量。
- 容器服务的网络模式:如果使用了容器网络模式(而非主机模式),需要确认容器之间的网络策略是否允许跨实例访问,部分容器服务可能默认限制跨实例容器通信。
内容的提问来源于stack exchange,提问作者yacobkennedy
相关产品推荐
相关产品推荐

