mongo addShard“找不到通用协议”errmsg 126

我试图学习一些MongoDB,并希望安装一个两个分片的数据库,用于在这两个“节点”之间分配数据,并利用其效率和健壮性。

我也在Docker上工作。 所以在docker工人中,我创build了4个虚拟机与他们各自的IP:

  • mongo1(172.17.0.6):第一个分贝用作分片
  • mongo2(172.17.0.5):作为分片使用的第二个分贝
  • mongocfg(172.17.0.4):整个系统的configuration映像
  • mongorouter(172.17.0.3):访问其他两个碎片的路由器; 整个分贝

如果你不熟悉docker,可以把它想象成一个VirtualBoxpipe理器,它帮助在相同的环境和操作系统下运行多个虚拟镜像。 举个例子,只要想想那里的每个IP都只有不同的电脑。

问题是,添加一个新的碎片,我读过,我需要连接到mongorouter,然后通过他们的IP和端口添加这两个碎片。 在$ docker exec -it mongorouter mongo ,我执行$ docker exec -it mongorouter mongo ,出现mongo console

mongos>

在那里我键入并得到确切的:

mongos> sh.addShard("172.17.0.6:27017") { "ok" : 0, "errmsg" : "No common protocol found.", "code" : 126 }

而我试图看看这是什么意思,没有任何线索。 这不只是简单的谷歌search,我认为我自己。 当然碎片不会在这之后join。 在绝望的情况下,我尝试了所有的IP地址,即使所有的IP地址都是172.17.0.2

我可以使用一些build议,只要有正确的文档,如在哪里可以find错误代码126或什么协议errmsg引用或任何东西。

提前致谢。

编辑。

我没有find解决办法。 问题是因为我正在使用不正确的Dockerfile来构build虚拟机。 如果有人感兴趣,不同的是,错误的Docker文件有一个FROM ubuntu:latest和正确的FROM mongo 。 如果有人在这里遇到同样的问题,那么我可以指出更好的方向。

Interesting Posts