Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

自己管理型レプリカセット ノードの優先順位の調整

項目一覧

  • Overview
  • Considerations
  • 手順

レプリカセット ノードの priority 設定は、プライマリの 選挙のタイミングと結果の両方に影響します。優先順位の高いノードは選挙を呼び出す可能性が高く、勝つ可能性も高いです。この設定を使用して、一部のノードがプライマリになる可能性を高くして、他のノードがプライマリにならないようにします。

ノードの priority 設定の値によって、選挙におけるノードの priority が決まります。数値が大きいほど、優先順位が高くなります。

優先順位を変更するには、レプリカ構成オブジェクトの members 配列を更新します。配列のインデックスは 0 で始まります。このインデックス値を、配列内のレプリカセット ノードの members[n]._id フィールドの値と混同 しないでください

priorityの値は任意の浮動小数点(10進数)で、0 から 1000 までの数値です。priority フィールドのデフォルト値は 1 です。

あるノードがプライマリとして選挙を目指すことを防ぐには、そのノードに優先順位 0 を割り当てます。非表示ノード遅延ノードpriority0 に設定されています。

アービタの優先順位は 0 です。

スケジュールされたメンテナンスウィンドウ中に優先度設定を調整します。優先順位を再構成すると、現在のプライマリが強制的に降格し、選挙が行われます。選挙の前に、プライマリは開いているすべてのクライアント接続を閉じます。

members[n].prioritymembers[n].votes には次の関係があります。

  • 投票権のない(すなわち votes0 の)ノードの priority は 0 である必要があります。

  • 優先度が priority より大きいノードは、投票数も votes ではありません。

したがって、投票権のないノードの priority を上げるには、 votes1 に設定する必要があり、投票権のあるレプリカセット ノードの数を増やします。投票権のないノードの優先順位を上げる前に、以下を検討します。

  • MongoDB レプリカセットには、最大 7 個の投票権のあるノードを含めることができます。レプリカセットにすでに投票権のあるノードが 7 個ある場合、レプリカセット内の残りのノードの優先順位を 0 より大きくすることはできません。

  • レプリカ再構成で、一度に追加または削除できる投票権のあるノードは 1 つだけです。複数の投票権のないノードの優先度を0 より高く変更するには、一連の replSetReconfig または rs.reconfig() 操作を発行して、一度に 1 つのノードを変更します。詳細については、「再構成では一度に 1 つの投票ノードしか追加または削除できない」を参照してください。

警告

  • rs.reconfig() shell メソッドを使用すると、現在のプライマリを強制的に降格させることができ、選挙が行われます。プライマリが降格すると、mongod はすべてのクライアント接続を閉じます。通常、この処理時間は 10 ~ 20 秒ですが、スケジュールされたメンテナンス期間中にこれらの変更を行ってください。

  • MongoDB のバージョンによって検証ルールが異なる可能性があるため、異なるバージョンの MongoDB のノードを含むレプリカセットの再設定は避けてください。

1

mongoshでは、 rs.conf()を使用してレプリカセット構成を取得し、それを変数に割り当てます。 例:

cfg = rs.conf()
2

members 配列で設定されているように、各ノードの members[n].priority 値を変更します。

cfg.members[0].priority = 0.5
cfg.members[1].priority = 2
cfg.members[2].priority = 2

この一連の操作は、cfg の値を変更して、members 配列で定義されている最初の 3 つのノードの優先順位を設定します。

3

rs.reconfig() を使用して新しい構成を適用します。

rs.reconfig(cfg)

この操作は、cfg の値で定義された構成を使用してレプリカセットの構成を更新します。

戻る

投票権のないノード