我已设置“复制”并尝试连接
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>,并且每个实例都位于远程位置。
答案 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