マスタノードの選挙プロセスのMongoDBレプリカセット

自動許容差部品ノードの機能がダウンしている、問題は、複製セットに随時発生し、選挙関連のプロセスをトリガーするのMongoDBのレプリケーションセットが完了すると、自動的にプライマリノードから切り替えます。部材がバックグラウンドで実行されているハートビート・スレッドになり、全てのノードのセットコピーセット各レプリカは、両方の場合において、状態検出処理をトリガします。

  1. レプリカセットメンバーのハートビート検出結果が変化し、そのようなノードがダウンしているか、新しいノード。
  2. 状態検出処理上4Sは行われません。状態検出処理では、一般的に以下の工程を含みます:

(1)このプロセスの外である場合、それは、選挙プロセスにあるか否かを検出します。
バックアップ・マスター・ノードのリストを維持(2)、リスト内のすべてのノードは、マスターノードとして選出される可能性のある各ノード自体が検出され、世界的な条件が満たされている:
。オンラインかどうかが大半を見て複製セットを。
B.自分の優先順位が0よりも大きいです。
C。自体はアービタではありません。
D。OPTIMEは、最新のノードよりも自分10Sに遅れるません。
すなわち、最新の情報に基づいてクラスタプログラムによって保存されました。
すべての条件が満たされている場合、それは、主要なバックアップノードのリストに自分自身を追加しますそうでない場合は、リストから自分自身を削除します。

检测以下条件,若都满足,将主节点降为从节点(如果要降级的主节点是自身,直接调用降级方法,如果不为自身,调用replSetStepDown命令将复制集主节点降级为从节点:
    a. 集群中主节点存在。
    b. "主节点的备用列表”中存在比当前的主节点priority更高的节点。
    c. "主节点的备用列表”中priority最高的节点,其opTime要比其他所有节点最新的opTime落后10s以内。
    d. 检测自身是否为主,若为主,且自身无法看见复制集的Majority在线,将自身降级为从。
    e. 如果看不见集群中有主节点存在,检测自身是否在”主节点的备用列表”,若不在,打印log并退出此流程。
    f. 若自身在”主节点的备用列表”中,开始判断自身可否向复制集中发送选举自身为主节点的通知,判断过程包含:
         1> 自身是否可以看见复制集中的Majority在线。
         2>自身是否在”主节点的备用列表”。

条件が満たされた場合は、セット「自体が選挙プロセスになっている」フラグがtrueで、「選挙そのものマスターノード」アプローチを入力してください。
この方法は、以下の条件を満たしていることを確認します
。スレッドがこのスレッドはロックを得ました。
B.このノードは、構成または0に設定可能なオプションslaveDelay slaveDelayされません。
C。このノードはアービタに構成されていません。
、呼び出し元の環境検出満たした場合は、次の条件がトリガされた場合、投票「マスターノードとして私を選出することによって、」送信されません:
1>現在の時刻が実行steppedDown +の凍結時間、内部に設定された時間のための凍結期間steppedDown(の端部よりも小さいですそれは)60代のために呼び出します。
2>自分のOPTIMEない日に、すべてのノード。
彼らの新しいよりもノードOPTIME場合3>、このプロセスを終了します。
、もし裁判官が継続した後、これらのノード、いくつかの時間のためのランダムな睡眠の一人一人のために、自身の持つ他のほとんどの最近の新しいノード、など。
。自身5分以内のラインとオンライン複製セットではないすべてのノードで。
B。他に問題がなければ、全体のプロセスを終了し、この過程で自分の投票が行われて、彼らは、30代で投票するかどうかを決定するために行われるときの票を取得しよう。
検出された後、我々は最終的に投票を送信することができますすべてのこれらの複合体は、レプリケーションセットを「マスターノードとして私を選出しました」。
半分以上、そのマスターを設けた場合の半分以下彼らのマスターノードに等しい投票数は、変化しない場合に送信した後、すべてのノードからの投票を受け取ります。
投票後、設定をfalseにフラグ「自体が選挙プロセスにありました」。
すべての決定は、すべての条件が満たさ条件付き欠落することが防止されていることを確認する必要があります前に、私たちは、関係を決定するために、より複雑なロジックに関連している可能性があり、上記の判定ロジックのいくつかは判断が繰り返され、見ることができますが、最終的な結果には影響しません。
ノードのセットをコピーする際の情報を投票し、他のノードによって送信された「マスターノードとして私を選出」を受信、次の判断があるでしょう:
。レプリケーションセット自体保存されたコンフィギュレーション・バージョンが低すぎると、投票しません。
B。コンフィギュレーション・バージョンを保存する複製開始要求セットのノードが低すぎると、投票。
発信ノードが投票するここで、c。セットは、それに対して、投票を自分自身を複製していない場合。
D.集中型のレプリケーションマスタノードは、投票が存在します。
ノードがよりノード優先順位の存在下で選挙に参加することができた場合、それに対して投票を要求ベース。
投票の独自の数を取得することにより、すべての条件が(それも、何の投票に参加しない場合は30代は、投票に参加するかどうかを決定します)場合は、投票数はキャスト。
そのことについて言われる必要がある、それはほとんどの場合に限り、野党のノードが存在するとして、ノード要求がマスターすることができないという、万票最終カットに反対するだろう。
選挙プロセスは、実際に使用が2点に集約されている、非常に複雑である:
5Sに関する一般的な必要性が主な選挙でした。
新しい選出されたマスターノードは、すぐにハングアップした場合は、再選挙の主要少なくとも30代の時間を必要としています。

おすすめ

転載: blog.51cto.com/8413723/2436423