MongoDB 5.0 Replication: Mongo::Error::NoServerAvailable
MongoDB 5.0 Replication: Mongo::Error::NoServerAvailable
我想知道如何在 MongoDB 上启用复制时修复以下错误:<Server address=db-master:27017 UNKNOWN>
只有在启用复制时才会发生。
错误
Mongo::Error::NoServerAvailable (No nearest server is available in cluster: #<Cluster topology=ReplicaSetNoPrimary[db-master:27017,db-node2:27017,db-node1:27017,name=rs0,v=6,e=7fffffff0000000000000017]
servers=[#<Server address=db-master:27017 UNKNOWN>,#<Server address=db-node2:27017 UNKNOWN>,#<Server address=db-node1:27017 UNKNOWN>]> with timeout=30, LT=0.015)
此问题是由于 DNS 解析引起的吗?有没有办法指定 IP 地址而不是集群拓扑的别名(来自主机文件)?
当 ssh'ing
到主节点和辅助节点时,ping 似乎有效。
[db-node2 server] $ ping db-master
PING db-master ([IP_IS_HERE]) 56(84) bytes of data.
64 bytes from db-master ([IP_IS_HERE]): icmp_seq=1 ttl=63 time=0.153 ms
64 bytes from db-master ([IP_IS_HERE]): icmp_seq=2 ttl=63 time=0.150 m
mongo.conf
net:
port: 27017
bindIp: 0.0.0.0,localhost,127.0.0.1,db-master,[IP_IS_HERE]
bindIpAll: true
replication:
replSetName: "rs0"
ubuntu 主机
$ cat /etc/hosts
127.0.0.1 localhost
[IP_IS_HERE] db-master
[IP_IS_HERE] db-node1
[IP_IS_HERE] db-node2
您是否在其他主机上启动了 mongod 服务?
你的配置没有多大意义。如果你想允许来自任何主机的连接,那么使用
net:
port: 27017
bindIpAll: true
或
net:
port: 27017
bindIp: 0.0.0.0
如果您想限制来自特定主机的连接,请使用
net:
port: 27017
bindIp: localhost,db-master,[IP_IS_HERE]
ssh 使用端口 22 但您的 MongoDB 使用端口 27017,因此您的防火墙可能会阻止连接(同样适用于 ping
)。如果你想检查连接是否可用,你可以使用 curl
命令:
curl --connect-timeout 3 --silent --show-error db-node1:27017
如果您收到回复
It looks like you are trying to access MongoDB over HTTP on the native driver port.
然后可以连接。
的回应
Connection timed out after 3000 milliseconds
表示您的防火墙阻止了连接尝试。
我想知道如何在 MongoDB 上启用复制时修复以下错误:<Server address=db-master:27017 UNKNOWN>
只有在启用复制时才会发生。
错误
Mongo::Error::NoServerAvailable (No nearest server is available in cluster: #<Cluster topology=ReplicaSetNoPrimary[db-master:27017,db-node2:27017,db-node1:27017,name=rs0,v=6,e=7fffffff0000000000000017]
servers=[#<Server address=db-master:27017 UNKNOWN>,#<Server address=db-node2:27017 UNKNOWN>,#<Server address=db-node1:27017 UNKNOWN>]> with timeout=30, LT=0.015)
此问题是由于 DNS 解析引起的吗?有没有办法指定 IP 地址而不是集群拓扑的别名(来自主机文件)?
当 ssh'ing
到主节点和辅助节点时,ping 似乎有效。
[db-node2 server] $ ping db-master
PING db-master ([IP_IS_HERE]) 56(84) bytes of data.
64 bytes from db-master ([IP_IS_HERE]): icmp_seq=1 ttl=63 time=0.153 ms
64 bytes from db-master ([IP_IS_HERE]): icmp_seq=2 ttl=63 time=0.150 m
mongo.conf
net:
port: 27017
bindIp: 0.0.0.0,localhost,127.0.0.1,db-master,[IP_IS_HERE]
bindIpAll: true
replication:
replSetName: "rs0"
ubuntu 主机
$ cat /etc/hosts
127.0.0.1 localhost
[IP_IS_HERE] db-master
[IP_IS_HERE] db-node1
[IP_IS_HERE] db-node2
您是否在其他主机上启动了 mongod 服务?
你的配置没有多大意义。如果你想允许来自任何主机的连接,那么使用
net:
port: 27017
bindIpAll: true
或
net:
port: 27017
bindIp: 0.0.0.0
如果您想限制来自特定主机的连接,请使用
net:
port: 27017
bindIp: localhost,db-master,[IP_IS_HERE]
ssh 使用端口 22 但您的 MongoDB 使用端口 27017,因此您的防火墙可能会阻止连接(同样适用于 ping
)。如果你想检查连接是否可用,你可以使用 curl
命令:
curl --connect-timeout 3 --silent --show-error db-node1:27017
如果您收到回复
It looks like you are trying to access MongoDB over HTTP on the native driver port.
然后可以连接。
的回应Connection timed out after 3000 milliseconds
表示您的防火墙阻止了连接尝试。