我正在尝试学习一些MongoDB,并希望安装两个分片数据库,以便在这两个“节点”之间分配我的数据,并利用其效率和稳健性。
我也在Docker工作。所以在docker中我用它们各自的IP创建了4个虚拟机:
如果您不熟悉docker,只需将其视为VirtualBox管理器,它可以帮助在相同的环境和操作系统下运行多个虚拟映像。例如,只要认为那里的每个IP只有不同的计算机。
问题是,要添加一个新的分片,我已经读过我需要连接到mongorouter,然后通过它们的IP和端口添加两个分片。在docker中,我执行$ docker exec -it mongorouter mongo
,mongo控制台显示为
mongos>
然后我输入并准确地获取:
mongos> sh.addShard("172.17.0.6:27017")
{ "ok" : 0, "errmsg" : "No common protocol found.", "code" : 126 }
我试图看看这意味着什么并且没有任何线索。这不仅仅是我自己认为的简单的谷歌搜索。当然,此后不会添加分片。在一个严重的镜头中,我已经尝试了所有IP,即使所有这些IP都使用了网关172.17.0.2
。
我可以在正确的文档中使用一些建议,比如在哪里可以找到错误代码126或者什么协议是errmsg引用或任何东西。
提前致谢。
EDIT。
我没有找到解决方案。问题是因为我使用了错误的Dockerfile来构建VM。如果有人有兴趣,区别在于错误的Docker文件有FROM ubuntu:latest
而正确的文件有FROM mongo
。如果有人带着同样的问题来到这里,那就是我能指出你的更好的方向。