部署在AWS ECS Fargate的Nest.js应用无法连接Liquid Web远程数据库求助
排查ECS Fargate连接Liquid Web远程数据库的额外方向
确认Fargate任务的实际出口IP
你当前加白名单的是NLB的Elastic IP,但Fargate任务的外网出口IP不一定是NLB的IP:- 如果任务没开启
assignPublicIp,流量会走VPC的NAT网关,出口IP是NAT网关的公网IP; - 如果开启了
assignPublicIp,出口IP是任务自己的临时公有IP。
可以在Fargate任务容器里执行curl ifconfig.me或者wget -qO- ifconfig.co获取实际出口IP,把这个IP加入Liquid Web的白名单再测试。
- 如果任务没开启
测试端口连通性
在Fargate容器内部用nc -zv <数据库主机> <数据库端口>(比如nc -zv db.example.com 3306)测试端口是否能打通。如果提示超时或拒绝,说明要么Liquid Web侧还有未放开的防火墙规则,要么中间网络链路有问题。检查DNS解析是否正常
在容器里执行nslookup <数据库域名>,看解析出的IP是否和你本地解析的一致。如果解析结果不同,可能是VPC的DNS设置(比如用了自定义DNS)导致解析错误,试试直接用数据库的公网IP替换域名连接测试。核对MySQL授权规则
检查Liquid Web控制面板的Remote MySQL Hosts里的IP格式是否正确:单个IP要确保是x.x.x.x/32的CIDR格式(有些面板不支持纯IP,必须加掩码)。另外,确认数据库用户的授权范围,比如用户是否是username@允许的IP,而不是仅授权了本地访问的username@localhost。查看数据库连接日志
联系Liquid Web的技术支持,让他们导出数据库的连接日志,看是否有来自Fargate出口IP的连接请求记录——如果有被拒绝的日志,能直接定位是权限还是防火墙问题;如果连请求记录都没有,说明流量根本没到达数据库服务器,要回头查VPC的路由、NAT网关配置。排查VPC网络配置细节
- 确认Fargate任务所在子网的路由表是否有指向NAT网关的默认路由(
0.0.0.0/0指向NAT网关); - 检查NAT网关的状态是否正常,是否有公网IP;
- 确认网络ACL的出站规则是否允许所有TCP流量(或至少数据库端口的流量)到任意地址,且入站规则允许响应流量。
- 确认Fargate任务所在子网的路由表是否有指向NAT网关的默认路由(
内容的提问来源于stack exchange,提问作者Reyver Cris
相关产品推荐
相关产品推荐

