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
相关产品推荐
相关产品推荐

