因为所有分片都需要通信,所以不能将localhost用作分片。要么在localhost中使用所有分片和configdbs,要么在实际的IP主机中使用所有分片和配置

时间:2014-08-08 06:02:42

标签: mongodb

mongos> sh.addShard("rs0/delhivery-tech:27017,delhivery-tech:27018,delhivery-tech:27019");

{
    "ok" : 0,
    "errmsg" : "can't use localhost as a shard since all shards need to communicate. either use all shards and configdbs in localhost or all in actual IPs  host: delhivery-tech:27017 isLocalHost:0"
}

我在不同端口的同一主机上运行3个实例。这是一个测试系统。我创建了一个名为replica set的{​​{1}}。现在我要添加rs0。它显示实例正在shard上运行。即使我尝试使用ip和loopback ip也是..

如果有人帮助我从同一个

出来,那将是很棒的

1 个答案:

答案 0 :(得分:7)

我认为您在注册配置服务器(--configdb)时使用了“localhost”。你能确定用主机名开始你的mongos吗?像

这样的东西

mongos --configdb delhivery-tech:27019

我邀请您查看此页面中的第一段: http://docs.mongodb.org/manual/tutorial/deploy-shard-cluster/

PS:当您的群集(副本集和/或分片)出现问题时,显示它的状态/配置是一件好事。 (rs.status()或sh.status())。这将有助于人们了解您的拓扑并提供更好的答案。