自己管理型レプリカセット ノードの優先順位の調整
Overview
レプリカセット ノードの priority
設定は、プライマリの 選挙のタイミングと結果の両方に影響します。優先順位の高いノードは選挙を呼び出す可能性が高く、勝つ可能性も高いです。この設定を使用して、一部のノードがプライマリになる可能性を高くして、他のノードがプライマリにならないようにします。
ノードの priority
設定の値によって、選挙におけるノードの priority
が決まります。数値が大きいほど、優先順位が高くなります。
Considerations
優先順位を変更するには、レプリカ構成オブジェクトの members
配列を更新します。配列のインデックスは 0
で始まります。このインデックス値を、配列内のレプリカセット ノードの members[n]._id
フィールドの値と混同 しないでください。
priority
の値は任意の浮動小数点(10進数)で、0
から 1000
までの数値です。priority
フィールドのデフォルト値は 1
です。
あるノードがプライマリとして選挙を目指すことを防ぐには、そのノードに優先順位 0
を割り当てます。非表示ノードと遅延ノードの priority
は 0
に設定されています。
アービタの優先順位は 0
です。
スケジュールされたメンテナンスウィンドウ中に優先度設定を調整します。優先順位を再構成すると、現在のプライマリが強制的に降格し、選挙が行われます。選挙の前に、プライマリは開いているすべてのクライアント接続を閉じます。
優先順位と投票
members[n].priority
と members[n].votes
には次の関係があります。
したがって、投票権のないノードの priority
を上げるには、 votes
を 1
に設定する必要があり、投票権のあるレプリカセット ノードの数を増やします。投票権のないノードの優先順位を上げる前に、以下を検討します。
MongoDB レプリカセットには、最大 7 個の投票権のあるノードを含めることができます。レプリカセットにすでに投票権のあるノードが 7 個ある場合、レプリカセット内の残りのノードの優先順位を
0
より大きくすることはできません。レプリカ再構成で、一度に追加または削除できる投票権のあるノードは 1 つだけです。複数の投票権のないノードの優先度を
0
より高く変更するには、一連のreplSetReconfig
またはrs.reconfig()
操作を発行して、一度に 1 つのノードを変更します。詳細については、「再構成では一度に 1 つの投票ノードしか追加または削除できない」を参照してください。
手順
警告
rs.reconfig()
shell メソッドを使用すると、現在のプライマリを強制的に降格させることができ、選挙が行われます。プライマリが降格すると、mongod
はすべてのクライアント接続を閉じます。通常、この処理時間は 10 ~ 20 秒ですが、スケジュールされたメンテナンス期間中にこれらの変更を行ってください。MongoDB のバージョンによって検証ルールが異なる可能性があるため、異なるバージョンの MongoDB のノードを含むレプリカセットの再設定は避けてください。
各ノードの優先順位の値を変更します。
members
配列で設定されているように、各ノードの members[n].priority
値を変更します。
cfg.members[0].priority = 0.5 cfg.members[1].priority = 2 cfg.members[2].priority = 2
この一連の操作は、cfg
の値を変更して、members
配列で定義されている最初の 3 つのノードの優先順位を設定します。
レプリカセットに新しい構成を割り当てます。
rs.reconfig()
を使用して新しい構成を適用します。
rs.reconfig(cfg)
この操作は、cfg
の値で定義された構成を使用してレプリカセットの構成を更新します。