首页 > 解决方案 > 无法在 mongoDB 中创建副本集:“ok”:0

问题描述

我正在使用 Oracle Virtualbox 托管 3 个运行 CentOS 7 的 VM。

Vbox网络设置为:

primary-db Adapter1:NAT 模式,网络设置中没有转发规则 & Adapter2:桥接模式,混杂模式=全部允许

secondary-db1 Adapter1:NAT 模式,网络设置中没有转发规则 & Adapter2:桥接模式,混杂模式=全部允许

secondary-db2 Adapter1:NAT 模式,网络设置中没有转发规则 & Adapter2:桥接模式,混杂模式=全部允许

  1. 我已将 27017 端口添加到防火墙。(我还添加了 27018 进行测试)
  2. 创建 /data/db。
  3. 我在每台服务器的 /etc/hosts 文件中添加了所有主机 IP,并注释了 127.0.0.1 行
  4. 我已经像这样配置了所有 mongo.conf 文件:
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true

processManagement:
  fork: true  
  pidFilePath: /var/run/mongodb/mongod.pid 
  timeZoneInfo: /usr/share/zoneinfo

net:
  port: 27017
  bindIp: 192.168.1--.---,127.0.0.1

replication:
  replSetName: "replica01"

问题:

现在当我运行

# mongo -host <secondary-db server/192.168.---.---> -port 27017

在主服务器中,我可以进入辅助服务器的 mongo shell

但是当我尝试使用

rs.add('secondary-db1')

或者

rs.add('secondary-db1:27017') 

我不断得到这个:

replica01:PRIMARY> rs.add('secondary-db')
{
        "operationTime" : Timestamp(1581381570, 1),
        "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,
        "codeName" : "NewReplicaSetConfigurationIncompatible",
        "$clusterTime" : {
                "clusterTime" : Timestamp(1581381570, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}
replica01:PRIMARY>

我什至尝试评论 bindIP 行以进行测试,但它给了我相同的结果。我有没有看过一些东西?我用这个教程作为我的参考。

标签: mongodbvirtualboxcentos7replicaset

解决方案


只是为了健全性检查:

每个节点都有一个单独/不同的端口 每个节点都有一个单独/不同的 dir 文件夹

从您的帖子中不清楚...您通过防火墙仅声明了一个端口,但每个节点都需要自己的端口,文件夹-它们都是独立且并行的...。

直接登录到 1 个节点并首先执行:rs.initiate()

然后为其他 2 个节点执行 rs.add

这会将它们分组到一个副本集中


推荐阅读