1

レプリカ セットに 1 つのシャードと 3 つのメンバーしかない Mongodb を使用しています。各レプリカ セット メンバーを別のマシンに配置しています。2 つのメンバーにはそれぞれmongosルーターがあり、1 つのメンバー (ルーターがある) にはconfigサーバーがあり、3 つすべてにシャード サーバーがあります。ルーターを持つ mongodb インスタンスのそれぞれの 2 つの IP アドレスに解決される 1 つのホスト名がありmongosます。私は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');

ルーターを持つ mongodb インスタンスの 1 つを終了することにより、フェイルオーバー シナリオで何が起こるかをシミュレートしmongosます。これが発生すると、インスタンスがダウンしていることを検出し、DNS レコードからインスタンスの IP アドレスをプルーニングします。ただし、アプリケーションが mongodb に正しく再接続されていないようです。mongoose のerrorイベントが発行connectionされず、ノード サーバーを再起動するまでアプリケーションがハングします。

ここで何がうまくいかないのでしょうか?

アップデート:

Amazon インスタンスを手動で終了したときにnet、mongodb node.js クライアントが接続に使用しているクライアント ( ) がorイベントthis.connection = net.createConnection(this.socketOptions.port, this.socketOptions.host);を受信して​​いないことを確認しました。したがって、これは内部ノードの問題である可能性があるようです...closeerror

4

0 に答える 0