You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot连接MongoDB集群报MongoSocketException问题求助

Spring Boot连接MongoDB集群报错UnknownHostException的解决方案

问题核心

报错com.mongodb.MongoSocketException: ip1: nodename nor servname provided, or not known本质是Java无法解析MongoDB集群节点的IP/主机名,导致无法建立网络连接。

解决方案

  • 验证节点网络可达性
    在Spring Boot服务所在机器上,执行ping ip1、ping ip2、ping ip3测试每个集群节点的连通性:

    • 若ping不通,检查集群节点防火墙是否开放27017端口,同时确认服务机器与MongoDB集群处于同一网络或路由配置正确。
    • 若使用主机名而非IP,在服务机器的hosts文件添加映射(Linux路径/etc/hosts,Windows路径C:\Windows\System32\drivers\etc\hosts),示例:
      192.168.xx.xx ip1
      192.168.xx.xy ip2
      192.168.xx.xz ip3
      
  • 修正MongoDB URI配置

    • 替换URI中的占位符ip1、ip2、ip3为集群节点真实的可访问IP或主机名。
    • 若用户名/密码包含特殊字符(如@、&),需进行URL编码(例如@转义为%40)。
    • 先简化URI测试单节点连通性:mongodb://user:paswd@ip1:27017/dbname?authSource=admin,确认单节点可连接后再恢复集群配置。
  • 检查MongoDB副本集配置
    登录集群主节点,执行rs.status()命令查看副本集成员配置:

    • 确保成员的host字段是服务机器可解析的外部IP/域名,避免使用集群内部私有主机名。
    • 若成员配置为内部主机名,需修改副本集成员地址为外部可访问地址,或在服务机器hosts文件添加对应映射。
  • 排查Java网络配置

    • 检查JVM启动参数是否设置了自定义DNS服务器,确保该DNS能正确解析集群节点地址。
    • 添加JVM参数-Djava.net.preferIPv4Stack=true禁用IPv6,部分环境下IPv6解析会引发该异常。

内容的提问来源于stack exchange,提问作者jatin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 22:58:11