13

我正在尝试部署 mongodb 副本集。我已将我的 mongodb 实例作为副本的主要实例。现在我正在尝试添加另一个托管在不同 IP 地址的 mongodb 实例,作为副本的辅助,但我收到以下错误:

    rs0:PRIMARY> rs.add("<ip address>:27017")
{
    "ok" : 0,
    "errmsg" : "Either all host names in a replica set configuration must be localhost references, or none must be; found 1 out of 2",
    "code" : 103
}

我做错了什么?

4

3 回答 3

8

当我尝试在同一台机器上运行两个 mongod 实例时,我遇到了这个问题。当我提供时它会抛出错误

   rs.add("localhost:27027")
   (or)
   rs.add("127.0.0.1:27027")

其中27027是辅助端口号。

解决方案:

传递主机名而不是 IP 地址

  rs.add("myhostname:27027")
于 2015-12-20T09:41:09.123 回答
1

您新添加的副本集成员的 IP 地址是否解析为 localhost ?或者,您已经存在的成员是否解析为 localhost ?无论哪种方式,副本集都不允许混合本地主机/非本地主机配置。

查看此消息的源代码位置

此外,Mongo 分片指南这样说:

如果您使用“localhost”或 127.0.0.1 作为任何主机标识符的主机名部分,例如作为 addShard 的主机参数或 --configdb 运行时选项的值,则必须使用“localhost”或 127.0。 0.1 用于集群中任何 MongoDB 实例的所有主机设置。如果混合本地主机地址和远程主机地址,MongoDB 将出错。

这同样适用于副本集。

于 2015-04-20T11:49:20.077 回答
0

要将 1 节点副本集的主副本从 localhost / 127.0.0.1 重新配置为外部主机名 / ip,您可以执行以下操作:

cfg = rs.conf()
cfg.members[0].host = "mongo0.example.net:27017"
rs.reconfig(cfg)

第一行获取当前副本集配置,第二行修改成员 0 的主机字段,最后一行应用新配置。

在此处查看更多详细信息:https ://docs.mongodb.com/manual/tutorial/change-hostnames-in-a-replica-set/

于 2021-08-13T02:41:43.790 回答