2011-02-08 4 views
7

レプリカセットが2つのノードだけでMongoに設定されている場合は、新しいマスタの投票に常に大多数が存在するように、調整者needs to be addedを設定します。アービターは決してマスターそのものにはなれません。純粋にそうでなければネックアンドネック選挙で投票することができます。クライアント接続設定にMongoDBアービタを含めるべきですか?

のMongoDBクラスタに(私の場合、Javaで)クライアントを接続する場合、我々は、接続構成にspecify all the nodes of the clusterになっている:

List addrs = new ArrayList(); 
addrs.add(new ServerAddress("localhost" , 27017)); 
addrs.add(new ServerAddress("localhost" , 27018)); 

Mongo mongo = new Mongo(addrs); 

アービタは、接続構成に含まれるべきか?

データのコピーを持っていないと、プライマリノード(あるいは読み込み可能な二次)になることは決してありません(hereからの引用)

を:彼らは、私はない推測します

...しかし、私はちょっとチェックしたかった!

答えて

6

いいえ、接続にアービターを含める必要はありません。

結局のところ、あなたが疑っているように、そこにデータが存在しないため、コードのうちの1つに接続しようとすると、少しの問題があります。彼らは、オートフェイルオーバーを助けるために、その事実の背後にあるものを実行するだけです。

接続設定(マスタでなくても)にすべてのサーバを指定する必要はありません。あなたが言及したサーバの1つが応答を返す限り、そこからマスタを見つけることができます。 IMHOでは、より多くの名前を付けるほど、多くのものを取り除きます。

1

リストは単なるシードリストです。レプリカセットの実際のメンバーは、レプリカセットに接続した後に決定されます。あなたは27017でそれを指定することができます(ただし、それがダウンしていれば悪くなります)。

関連する問題