5

高可用性のために MongoDB ReplicaSet を使用して調査しています。

しかし、3 つのノードを持つ ReplicaSet で、PRIMARY mongod が 1 つしか残っていない場合 (つまり、他の 2 つのmongodインスタンスが終了したかシャットダウンされた場合)、数秒後に役割が SECONDARY に切り替わり、書き込みを受け付けなくなることがわかりました。そのため、レプリカ セットの価値は単一のインスタンスよりも低くなります。

私は PRIMARY 選出について知っており、理解していますが、PRIMARY ロールはサーバーに固定されており ( priorityset を使用して 10 など)、(たとえば、ネットワークの問題により) 他のサーバーにアクセスできなくなります。なぜメインサーバーはあきらめるのでしょうか?!

Windows (mongodb-win32-x86_64-2008plus-2.4.8) および Linux (CentOS) では 2.4.8、Linux では 2.0.x でテスト済み

報奨金開始:

PRIMARY が孤独を感じたときにレプリカ セットがあきらめた場合、100% の可用性を確保するための代替手段は何ですか? または、その場合に必要な特別な構成があるかもしれません。現在の実装では、ネットワークの問題が発生した場合に ReplicaSet が脆弱になります。

更新しました:

残念ながら、#3 がダウンし (プライマリとセカンダリが残ります)、その後しばらくしてセカンダリがダウンするというシナリオの前に、私は言いませんでした。次に、PRIMARY は、#3 がしばらく使用できないことがすでにわかっているため、実際には「あきらめる」だけです。これは実際に私のテスト環境でテストされました。

var rsconfig = {"_id":"rs4","members":[{"_id":0,"host":"localhost:27041","priority":10},{"_id":1,"host":"localhost:27042"},{"_id":2,"host":"localhost:27043","arbiterOnly":true}]}
printjson(rsconfig)
rs.initiate(rsconfig)

当初は SECONDARY と #3 (つまり ARBITER) を同じサーバーに配置することを考えていましたが、タイトルの質問のために、そのような構成を使用することはできません。

MongoDB が取るロジックを最初に説明してくれた Alan Spencer に感謝します。

4

4 に答える 4

8

メンバーの大部分がダウンしているため、MongoDB は最後に残ったメンバーが一貫しているとは想定していないため、これは予期されることです。

メンバーの大部分がダウンしている場合、いくつかのオプションがあります: http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/

于 2013-11-15T12:29:43.797 に答える
1

答えを出すだけです。このシナリオの動作は予期されたものです。MongoDB は、リーダー選出アルゴリズムを使用して新しいリーダーを選出します。したがって、多数派がいない場合、リーダーを選出することはできず、したがって書き込みはありません。

2 つのノードがダウンした時点での唯一のオプションは、レプリカ セットを 1 ノードのレプリカ セットとして再構成し、書き込み可能にすることです。これは、1 台のサーバーで rs.reconfig コマンドを使用して実行できます。ただし、これは一時的で緊急の設定に過ぎないことに注意してください。より長い期間では、レプリカ セット構成に奇数の合計ノード (3+) が必要です。

于 2013-11-20T21:06:43.757 に答える
-1

arbitersを使用してみてください。ほとんどのドキュメントでは 1 つだけを使用するように指示されていますが、この場合、選挙に勝つ必要があります。

http://docs.mongodb.org/manual/core/replica-set-architectures/から:

レプリカ セットのフォールト トレランスとは、使用できなくなってもプライマリを選択するのに十分なメンバーをセット内に残すことができるメンバーの数です。つまり、セット内のメンバーの数と、プライマリを選出するために必要な過半数との差です。プライマリがない場合、レプリカ セットは書き込み操作を受け入れることができません。フォールト トレランスはレプリカ セットのサイズの効果ですが、関係は直接的ではありません。

選挙の詳細: http://docs.mongodb.org/manual/core/replica-set-elections/

アービターの詳細: http://docs.mongodb.org/manual/faq/replica-sets/#how-many-arbiters-do-replica-sets-need

于 2013-11-24T20:41:34.737 に答える