复制在第一次连接[MongoError:getaddrinfo ENOTFOUND]时无法连接到服务器[IP:27017]

时间:2019-07-16 13:12:21

标签: node.js mongodb

我已设置“复制”并尝试连接

URI:   
mongodb://[userName:password]@IP1:27017,
[userName:password]@IP2:27017/dbName? 
authSource=admin&w=1&replicaSet=replicaqa

但是我遇到了以下错误:

{ MongoError: failed to connect to server [host_name_ip1:27017] on first connect 
[MongoError: getaddrinfo ENOTFOUND [host_name_ArbiterIP] [host_name_ArbiterIP]:27017]

当我分别尝试不复制就连接[IP1:27017]时,它可以工作。
这是我的Mongod.conf

systemLog:
    destination: file
    logAppend: true
    path: /var/mongodb/mongod.log

    # Where and how to store data.
    storage:
    dbPath: /data/var/lib/mongo
    journal:
    enabled: true
    #  engine:
    #  mmapv1:
    #  wiredTiger:

    # how the process runs
    processManagement:
    fork: true  # fork and run in background
    pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
    timeZoneInfo: /usr/share/zoneinfo

    # network interfaces
    net:
    port: 27017
    bindIp: 0.0.0.0

    security:
        authorization: "disabled"

    #operationProfiling:

    replication:
    replSetName: "replicaqa"

在配置复制时是否缺少某些内容?

我可以看到mongod实例是从复制开始的,在那里我可以看到(Primary>,Secondary>和Arbitary>,并且每个实例都位于远程位置。

1 个答案:

答案 0 :(得分:0)

发现错误,

当我们使用rs.conf()配置复制时,我们给出域名并更新etc / hosts文件中的DNS。

就我而言,我已在mongo实例(etc / hosts)中对其进行了更新,但未更新托管服务器的位置(服务器托管在另一个实例上)。

更新的主机文件正在运行,Node服务正在运行,现在对我有用。

当我进行不带复制的连接时,我可以连接,但问题是当我尝试与复制连接时。

(即使我在数据库连接字符串URL中指定了IP地址,也是如此。 像

mongodb://[userName:password]@IP1:27017,[userName:password]@IP2:27017/dbName? 
authSource=admin&w=1&replicaSet=replicaqa

它将尝试解析域名。因为我们已经在rs.conf()中进行了配置,所以我就是这样)

Windows中主机文件的路径

C:\Windows\System32\drivers\etc\hosts file

Linux / CentOS中主机文件的路径

/etc/hosts

DNS

10.XX.XX.XX viavi.local
10.XX.XX.XXX domain_name_configured_while_replication