添加可信源后无法连接DigitalOcean MongoDB v5.0的问题求助
DigitalOcean MongoDB添加可信源后无法连接的解决办法
问题背景
原本正常连接的DigitalOcean托管MongoDB v5.0,在控制台通过自动检测工具添加本机IP到可信源后,Mongo Compass和Mongo CLI均无法连接:
- Compass报错:
Server selection timed out after 30000 ms - CLI报错:
MongoDB shell version v5.0.2 connecting to: mongodb://<HOST>:27017/admin?authSource=admin&compressors=disabled&gssapiServiceName=mongodb&replicaSet=<REPLICA>&ssl=true&tls=true {"t":{"$date":"2023-01-11T01:41:23.185Z"},"s":"I", "c":"NETWORK", "id":*******, "ctx":"ReplicaSetMonitor-TaskExecutor","msg":"RSM host selection timeout","attr":{"replicaSet":"<REPLICA>","error":"FailedToSatisfyReadPreference: Could not find host matching read preference { mode: \"nearest\" } for set <REPLICA>}} Error: Could not find host matching read preference { mode: \"nearest\" } for set <REPLICA>, <REPLICA>/<HOST>:27017 : connect@src/mongo/shell/mongo.js:372:17 @(connect):2:6 exception: connect failed exiting with code 1
已尝试添加curl ifconfig.io获取的IPv6到可信源,问题未解决。
排查与修复步骤
1. 确认本地真实公网IP
DO自动检测的IP可能和你实际对外的IP不一致,分别获取IPv4和IPv6:
- 执行
curl ipv4.icanhazip.com拿到IPv4地址 - 执行
curl ipv6.icanhazip.com拿到IPv6地址
把这两个地址都添加到Trusted Sources,保存后等待1-2分钟让规则生效,再尝试连接。
2. 验证连接字符串配置
- 核对连接字符串中的
replicaSet名称,必须和DO控制台显示的完全一致,不能有拼写或大小写错误 - 确保连接字符串包含
ssl=true(DO托管MongoDB强制要求SSL),Compass中要勾选SSL连接选项
3. 排查IP白名单之外的因素
临时添加0.0.0.0/0(允许所有IPv4)和::/0(允许所有IPv6)到可信源,测试是否能连接:
- 如果能连接:说明之前添加的IP有误,重新核对本地公网IP
- 如果仍无法连接:
- 检查本地防火墙、杀毒软件是否拦截了27017端口的出站请求
- 若在公司/校园内网,确认内网对外的公网IP(可能是网关IP,而非本地设备IP),将该IP添加到可信源
4. 检查集群状态
登录DO控制台查看MongoDB集群的节点状态,确认所有节点正常运行,无宕机或维护情况。
5. 匹配CLI版本兼容性
当前使用的Mongo CLI是v5.0.2,尝试升级到与DO集群版本一致或更高的兼容版本,旧版本可能存在副本集连接的兼容性问题。
内容的提问来源于stack exchange,提问作者Antonio Roberto
相关产品推荐
相关产品推荐

