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

MongoDB添加分片时出现Connection refused错误的排查求助

排查MongoDB分片集群添加分片时的Connection refused错误

我来帮你一步步排查这个Connection refused的问题,这种情况在VirtualBox虚拟机环境里搭建分片集群时挺常见的,咱们从几个核心方向入手:

  • 先确认分片节点的服务状态与监听端口
    首先登录到分片节点的Ubuntu机器上,先检查mongod服务是否正常运行:

    systemctl status mongod
    

    如果服务没启动,先启动它:sudo systemctl start mongod。接着检查它是否在监听你指定的端口:

    ss -tulpn | grep mongod
    

    你需要看到类似LISTEN 0 128 0.0.0.0:27018 0.0.0.0:* users:(("mongod",pid=xxx,fd=xxx))的输出,确保端口和你执行sh.addShard时用的一致,且监听地址是0.0.0.0。

  • 检查VirtualBox的网络配置
    因为是虚拟机环境,网络互通是关键:

    • 如果你的几个节点是不同的VirtualBox虚拟机,要确保它们的网络模式是桥接网络或者内部网络,并且彼此能ping通。如果用的是NAT模式,虚拟机之间默认无法直接通信,需要配置端口转发,或者切换网络模式。
    • 如果用了端口转发,要确认转发规则里的子系统端口和分片节点的mongod端口一致,主机端口和你连接时用的端口匹配。
  • 检查Ubuntu防火墙(ufw)的规则
    Ubuntu 16.04默认启用ufw防火墙,即使你把bindIP设为0.0.0.0,如果防火墙没开放对应的端口,连接还是会被拒绝。在分片节点上执行:

    sudo ufw status
    

    看看你的分片端口(比如27018)是否在允许列表里。如果没有,添加规则并重启防火墙:

    sudo ufw allow 你的分片端口/tcp
    sudo ufw reload
    
  • 确认分片节点的mongod配置启用了分片角色
    别忘了,分片节点的mongod必须配置成分片服务器角色才能被加入集群。打开分片节点的/etc/mongod.conf,检查是否有以下配置:

    sharding:
      clusterRole: shardsvr
    

    如果没有,添加后重启mongod服务:sudo systemctl restart mongod。

  • 验证连接的IP是否正确
    你执行sh.addShard("ip:port")时用的IP,必须是查询路由器(mongos)能访问到的分片节点的IP。如果是同一VirtualBox内部的虚拟机,应该用分片节点的内网IP(比如192.168.56.102这类),而不是127.0.0.1或者宿主机的IP(除非配置了端口转发)。可以先在mongos所在的虚拟机上用mongo ip:port尝试直接连接分片节点,如果连不上,说明网络层面有问题,先解决这个再重试sh.addShard。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:14:40