Redis Sentinel メカニズムのメイン ライブラリがダウンしたときに、新しいメイン ライブラリを選択するにはどうすればよいですか? ノート

  1. 最初のラウンド: 最高の優先順位を持つスレーブが最高のスコアを獲得します。
    ユーザーは、スレーブ優先順位設定項目を使用して、さまざまなスレーブ ライブラリに異なる優先順位を設定できます。たとえば、
    メモリ サイズの異なる 2 つのスレーブ ライブラリがある場合、メモリの大きいインスタンスに高い優先順位を手動で設定できます。マスターを選択する際、
    Sentinel は優先度の高いスレーブ ライブラリに高い評価を与え、最も優先度の高いスレーブ ライブラリがあれば、それが新しいマスター ライブラリになります。
    スレーブ ライブラリの優先順位が同じ場合、センチネルは 2 回目のスコアリングを開始します。
  2. 第 2 ラウンド: 古いマスター ライブラリの同期度に最も近いスレーブ ライブラリのスコアが高くなります。
    このルールの基礎は、古いマスター ライブラリとの同期に最も近いスレーブ ライブラリがマスター ライブラリとして選択された場合、新しいマスター ライブラリには
    最新のデータが含まれるということです。
    スレーブ ライブラリと古いマスター ライブラリ間の同期の進行状況を判断するにはどうすればよいですか?
    マスター/スレーブ ライブラリが同期されると、コマンド伝播のプロセスが発生します。このプロセス中、マスター ライブラリは
    master_repl_offset を使用して、repl_backlog_buffer 内の最新の書き込み操作の位置を記録し、スレーブ ライブラリは、
    slave_repl_offset の値を使用して現在のレプリケーションの進行状況を記録します。
    この時点で、見つけたいslave_repl_offsetはmaster_repl_offsetに最も近いものである必要があります。
    すべてのスレーブ ライブラリの中で、スレーブ ライブラリのslave_repl_offsetがmaster_repl_offsetに最も近い場合、そのスレーブ
    ライブラリのスコアが最も高く、新しいマスター ライブラリとして使用できます。
    以下の図に示すように、古いマスター ライブラリの master_repl_offset が 1000、
    スレーブ ライブラリ 1、2、3 のslave_repl_offset がそれぞれ 950、990、900 である場合、スレーブ ライブラリ 2 が新しいマスター ライブラリとして選択される必要があります。
    ここに画像の説明を挿入
    もちろん、2 つのスレーブ ライブラリのslave_repl_offset値が同じである場合(たとえば、
    スレーブ ライブラリ1とスレーブ ライブラリ2のslave_repl_offset値が両方とも990である場合)、それらに3回目のスコアリングを与える必要があります。
  3. 各インスタンスには ID が付けられます。これは、ここではスレーブ ライブラリの番号に似ています。現在、Redis がマスター ライブラリを選択する場合
    、デフォルトのルールがあります。優先度とレプリケーションの進行状況が同じ場合、ID 番号が最も小さいスレーブ ライブラリが最も高いスコアを持ち、新しいマスター ライブラリとして選択されます

    この時点で、新たなマスターライブラリが選択され、「マスターの選択」の処理が完了する。
    このプロセスをもう一度見直してみましょう。
    まず、Sentinel はオンライン ステータスとネットワーク ステータスに従って要件を満たさない一部のスレーブ ライブラリをフィルタリングし、次に優先順位、レプリケーションの進行状況、および ID 番号に従って残りのスレーブ ライブラリをスコアリングします
    。最高スコアのライブラリが表示されると、それが新しいメイン ライブラリとして選択されます。

おすすめ

転載: blog.csdn.net/itlijinping_zhang/article/details/124980872