使用分片和复制的Mongodb设置进行自动故障转移时出现问题

时间:2013-06-09 00:40:24

标签: node.js mongodb amazon-web-services mongoose failover

我在Mongodb中只使用一个碎片和一个副本集中的3个成员。我在不同的机器上有每个副本集成员。两个成员各有一个mongos路由器,一个成员(有一个路由器)有一个config服务器,所有三个都有一个分片服务器。我有一个主机名解析为每个具有mongos路由器的mongodb实例的两个IP地址。我正在使用mongoose v.2.5.10从我的node.js应用程序连接到mongodb,代码如下:

var mongoose = require('mongoose');
mongoose.connection.on('error', function(err){
  console.error('Mongodb connection error: ', err);
});
var db = mongoose.connect('mongodb://username:password@' + mongoHost + '/database');

我通过终止一个具有mongos路由器的mongodb实例来模拟故障转移场景中会发生什么,当发生这种情况时,我检测到实例已关闭并从DNS中删除实例的ip地址记录。但是,我的应用程序似乎没有正确地重新连接到mongodb,因为没有发出mongoose error的{​​{1}}事件,并且我的应用程序挂起,直到我重新启动节点服务器。

这里可能出现什么问题?

更新

我刚刚确认mongodb node.js客户端用于连接的connection客户端(net)未收到this.connection = net.createConnection(this.socketOptions.port, this.socketOptions.host);close事件当我手动终止亚马逊实例时。所以这似乎可能是内部节点问题......

0 个答案:

没有答案