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

MongoDB分片部署:mongos路由连接配置服务器失败求助

MongoDB分片集群:mongos连接配置服务器失败排查

问题情况

搭建包含1个mongos路由、1个配置服务器和2个分片的MongoDB分片集群,执行mongos启动命令:

mongos --configdb config/<ip-of-config>:27017

出现连接拒绝错误:

{"t":{"$date":"2023-02-28T07:26:25.557+00:00"},"s":"I", "c":"-", "id":4333222, "ctx":"ReplicaSetMonitor-TaskExecutor","msg":"RSM received error response","attr":{"host":"127.0.0.1:27017","error":"HostUnreachable: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused","replicaSet":"config","response":{}}}

配置服务器的mongod.conf内容:

# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
  # engine:
  # wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

replication:
  replSetName: "config"

sharding:
  clusterRole: configsvr

已将bindIp改为0.0.0.0但问题未解决,以下是排查步骤:


排查步骤

1. 确认配置服务器mongod进程是否正常运行

  • 检查进程状态:
    systemctl status mongod
    # 或用ps命令兜底
    ps aux | grep mongod
    
  • 如果进程未运行,启动服务并查看启动日志定位问题:
    systemctl start mongod
    cat /var/log/mongodb/mongod.log
    
    常见启动失败原因:/var/lib/mongodb权限不足,执行chown -R mongodb:mongodb /var/lib/mongodb修复。

2. 验证配置服务器端口连通性

  • 在mongos所在机器测试端口:
    # 用telnet测试
    telnet <config-server-ip> 27017
    # 或用nc命令
    nc -zv <config-server-ip> 27017
    
  • 若连通失败:
    • 检查配置服务器防火墙,确保开放27017端口;
    • 临时关闭防火墙(如systemctl stop firewalld)测试,排除防火墙拦截问题。

3. 初始化配置服务器的副本集

因为配置文件中设置了replSetName: "config",必须初始化副本集才能被mongos识别:

  • 本地连接配置服务器:
    mongo --port 27017
    
  • 执行副本集初始化:
    rs.initiate()
    
  • 查看副本集状态,确认节点处于PRIMARY状态:
    rs.status()
    

4. 修正mongos启动命令

  • 确保命令中的<ip-of-config>是配置服务器的实际公网/内网IP,而非127.0.0.1(除非mongos与配置服务器在同一机器);
  • 若mongos与配置服务器在同一机器,需修改mongos端口避免冲突:
    mongos --configdb config/<config-server-ip>:27017 --port 27018
    

5. 检查端口占用情况

确认27017端口未被其他进程占用:

lsof -i :27017

若有其他进程占用,停止该进程或修改配置服务器端口。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:02:34