2

MongoDB を使用する実稼働環境に 2 サーバー ソリューションを使用します。

私の理解が正しければ、各サーバーに 1 つずつ、2 つのノードを持つ 1 つのレプリカ セットを持つことができます。フォールト トレランスが新しいプライマリ ノードを再割り当てするには、アービター ノードが必要です。

引き続き 2 つのサーバーを使用したいので、アービター ノードを保持しているサーバーがダウンした場合、新しいプライマリを設定する方法がありません。

私が思いついた解決策は、3 つのアービター ノードを持つことです。1台のサーバーに1台、もう1台に2台。そうすれば、いずれかのサーバーがダウンした場合、他のサーバーの非アービター ノードがプライマリになります。

これは正しいです?別のソリューションを使用する必要がありますか?

ありがとう!イグナシオ。

4

1 に答える 1

0

あなたのアプローチもうまくいきません。2 つのアービターを備えたマシンがダウンした場合、もう一方のマシンはそのレプリカに対して 2 票しか投じることができません。ただし、この構成で予備選挙を行うには 3 票が必要です。これは、これらのマシンの 1 つだけを選択して 1 つのアービターをホストすることに勝るものはありません。

ノード数が偶数の場合、プライマリ選択は保証されません。アプリにプライマリがない (読み取り専用モードになる) 可能性を許容するか、3 つ目のマシンを追加する必要があります。

マシンが 2 台しかない場合は、アービターを 2 台のマシンのうちの上位のマシンに配置することを検討します (プライマリをホストする必要があります)。このセットアップでは、

  1. セカンダリが利用できなくなっても、プライマリは引き続き機能します。
  2. プライマリが使用できなくなっても、アービタがまだ稼働している場合、セカンダリがプライマリになります。
  3. プライマリとアービタの両方が利用できなくなると (たとえば、マシン全体が利用できなくなる)、セカンダリはセカンダリのままになり、プライマリはなくなります。

シナリオ 3 はシナリオ 2 よりも一般的であることがわかりました。これを説明するために、MongoMMS (またはその他のもの) を使用してクラスターを監視し、ノードが使用できない場合 (特にシナリオ 3) をできるだけ早く調査できるようにすることを検討してください。

于 2014-09-25T16:53:51.260 に答える