【问题标题】:node-mongodb-native does not recover on replica set primary network failure?node-mongodb-native 在副本集主网络故障时无法恢复?
【发布时间】:2013-11-05 00:29:35
【问题描述】:

我们的 MongoDB 设置使用三个副本集分片。每个网络服务器在本地运行一个 mongos 实例,客户端 node.js 进程使用 Mongoose (3.6.20) 和 node-mongodb-native 通过该实例进行连接。所以 node-mongodb-native 只是连接到本地主机上的 mongos。

当一个副本集主节点严重宕机时(我们可以通过在主节点上执行 'ifdown eth0' 来模拟这种情况),mongos 会正确检测到这一点,并且还会检测到新的主节点已被选举。到目前为止,一切都很好。但是 node-mongodb-native 到 mongos 实例的连接仍然是打开的,但不能正常工作,需要重启 node procs。

我们的假设是 mongos 会终止与已死主节点的任何已建立连接,并且 node-mongodb-native 会重新连接,但情况似乎并非如此;服务器和操作系统都认为这些连接是打开的。相比之下,在主要 stepDown 中,客户端故障转移正常,连接关闭并重新打开。

我们正在查看 socketTimeoutMS,但这似乎不正确,因为它会导致仅空闲的连接断开连接。

我们是否缺少对客户端或 mongos 的配置,或者我们是否必须实现自己的 ping?

【问题讨论】:

    标签: mongodb mongoose node-mongodb-native


    【解决方案1】:

    根据实验和以下 MongoDB 错误,目前这似乎只是 mongos(或者,如果您愿意,也可以是客户端库)的一个缺点。现在看起来像是“在你的应用程序中编写你自己的 ping 逻辑并在失败时触发重新连接”,所以这就是我们正在做的事情。

    https://jira.mongodb.org/browse/SERVER-9041

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2015-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      相关资源
      最近更新 更多