无法到达 Cluster0-shard-0 集的主节点

无法到达 Cluster0-shard-0 集的主节点

我已经在 Atlas 上建立了一个 MongoDB 集群,并且能够从 Compass 和我正在构建的 NodeJs 应用程序连接到它大约一周。今天,我开始从 NodeJs 应用程序持续收到下面的“瞬态”错误:

{MongoNetworkError:与 cluster0-shard-00-01-z4j9e.azure.mongodb.net:27017 的连接 5 在 TLSSocket 处关闭。 (/Users/ekkis/dev/tst/node_modules/mongodb-core/lib/connection/connection.js:276:9) 在 Object.onceWrapper (events.js:277:13) 在 TLSSocket.emit (events.js:194:15) 在 _handle.close (net.js:610:12) 在 TCP.done (_tls_wrap.js:386:7) 名称:'MongoNetworkError',errorLabels:['TransientTransactionError'],
[Symbol(mongoErrorContextSymbol)]:{} }

尽管 Compass 似乎运行良好,但有时速度很慢,但它可以工作。因此我尝试安装 shell(OSX 上的 v4.0.0)并得到以下结果:

$ mongo "mongodb+srv://cluster0-z4j9e.azure.mongodb.net/test" --username tst

MongoDB shell 版本 v4.0.0 输入密码: 连接到:mongodb+srv://cluster0-z4j9e.azure.mongodb.net/test 2019-02-24T16:48:07.460-0800 I NETWORK [js] 启动 Cluster0-shard-0/cluster0-shard-00-00-z4j9e.azure.mongodb.net.:27017、cluster0-shard-00-01-z4j9e.azure.mongodb.net.:27017、cluster0-shard-00-02-z4j9e.azure.mongodb.net.:27017 的新副本集监视器 2019-02-24T16:48:09.971-0800 W NETWORK [js] 无法到达 Cluster0-shard-0 集的主节点2019-02-24T16:48:09.971-0800 I 网络 [js] 无法访问 Cluster0-shard-0 集合的任何节点。请检查网络连接和集合的状态。这种情况已连续发生 1 次检查。2019-02-24T16:48:13.260-0800 W 网络 [js] 无法访问 Cluster0-shard-0 集合的主节点 2019-02-24T16:48:13.260-0800 I 网络 [js] 无法访问 Cluster0-shard-0 集合的任何节点。请检查网络连接和集合的状态。这种情况已连续发生 2 次检查。 2019-02-24T16:48:16.880-0800 W NETWORK [js] 无法访问 Cluster0-shard-0 集合的主节点 2019-02-24T16:48:16.880-0800 I NETWORK [js] 无法访问 Cluster0-shard-0 集合的任何节点。请检查网络连接和集合的状态。这种情况已连续发生 3 次检查。2019-02-24T16:48:22.303-0800 W NETWORK [js] 无法访问 Cluster0-shard-0 集合的主节点 2019-02-24T16:48:22.303-0800 I NETWORK [js] 无法访问 Cluster0-shard-0 集合的任何节点。请检查网络连接和集合的状态。这种情况已连续发生 4 次检查。 2019-02-24T16:48:22.303-0800 E QUERY [js] 错误:连接失败副本集 Cluster0-shard-0/cluster0-shard-00-00-z4j9e.azure.mongodb.net.:27017,cluster0-shard-00-01-z4j9e.azure.mongodb.net.:27017,cluster0-shard-00-02-z4j9e.azure.mongodb.net.:27017 :connect@src/mongo/shell/mongo.js:251:13 @(connect):1:6 异常:连接失败

我似乎无法让它工作。我应该重新创建集群吗?我还能做什么来排除故障?

答案1

当我尝试从 Linux Mongo 客户端连接到 MongoDB Atlas 集群时,也遇到了同样的情况。

我遇到此问题的原因与客户端和集群的版本不匹配有关。Mongo 客户端使用的是 v4.0.5,而 DB 集群使用的是 v4.0.6。

将 Mongo 客户端更新至版本 v4.0.6 已解决了该问题。

至于您的 node.js 应用程序的问题,它可能与您看到的 mongo 客户端问题无关,或者可能与版本控制有关,因此我建议查看您使用的数据库连接器是否有可用的更新。

编辑:为了稍微扩展一下你从节点应用程序得到的错误,有这个 StackOverflow 问题讨论您看到的确切错误代码。

答案2

如果你使用的是免费和共享层集群,那么在遇到以下情况时,你可能会遇到这些神秘的瞬态错误:操作限制这些集群。目前似乎还没有一种简单的方法可以知道您是否在 Web UI 中击中了这些集群,但查看一下您的指标,您可能就能推断出您是否击中了这些集群。

答案3

很可能是您的 IP 已更改,因此您需要将新的 IP 列入白名单:安全 > 网络访问 > 添加 IP 地址

相关内容