同一VPC内SpringBoot实例可Ping通MongoDB但连接超时求助
排查同VPC下SpringBoot EC2连接MongoDB EC2超时问题
关键排查步骤
1. 检查MongoDB绑定地址配置
MongoDB默认仅绑定127.0.0.1,仅允许本地连接。需修改配置文件(通常为/etc/mongod.conf):
- 将
bindIp设置为MongoDB实例的私有IP,或临时设为0.0.0.0(测试用,生产环境建议指定私IP)
修改后重启MongoDB服务:
sudo systemctl restart mongod
2. 验证MongoDB端口监听状态
在MongoDB实例上执行命令,确认27017端口处于监听状态:
netstat -tulpn | grep 27017
正常输出应包含0.0.0.0:27017或对应私有IP的条目,否则需回到配置步骤检查。
3. 确认SpringBoot连接字符串正确性
确保应用连接字符串使用MongoDB实例的私有IP,而非公网IP或localhost,示例:
spring.data.mongodb.uri=mongodb://<mongo-private-ip>:27017/your-target-db
同时检查是否存在端口错误、未配置正确的认证信息(若MongoDB开启了权限验证)。
4. 检查SpringBoot实例的出站规则
即使MongoDB入站规则已开放,需确认SpringBoot实例的安全组出站规则允许TCP 27017端口流量。若为自定义安全组,需添加对应允许规则。
5. 排查MongoDB实例的系统防火墙
EC2实例可能启用了系统级防火墙(如ufw或iptables),拦截27017端口:
- 检查
ufw状态并添加规则:
sudo ufw status sudo ufw allow from <springboot-private-ip> to any port 27017
- 检查
iptables规则:
sudo iptables -L -n | grep 27017
若无允许条目,需添加对应规则放行流量。
6. 验证MongoDB服务运行状态
确认MongoDB服务正常运行:
sudo systemctl status mongod
若服务异常,查看日志定位问题:
sudo journalctl -u mongod
内容的提问来源于stack exchange,提问作者Rajat Sahu
相关产品推荐
相关产品推荐

