ホームページ > データベース > Redis > Redis セントリー モードを一緒に分析しましょう

Redis セントリー モードを一緒に分析しましょう

WBOY
リリース: 2022-03-16 18:09:01
転載
2286 人が閲覧しました

この記事では、Redis に関する関連知識を提供します。主にセンチネルの概念、センチネルの役割、センチネルの有効化、センチネルの原理など、センチネル モードに関連する問題を紹介します。皆さんのお役に立てれば幸いです。

Redis セントリー モードを一緒に分析しましょう

推奨学習: Redis チュートリアル

Sentinel モード

1. Sentinel の概念

  • マスター マルチ スレーブ構成では、マスターがダウンした場合、複数のスレーブの中から 1 つを新しいマスターとして選択する必要があります。 Redis のセンチネル メカニズム

  • Sentinel (センチネル) は、障害発生時に マスター/スレーブ構造内の各サーバーを監視するために使用される分散システムです次の図に示すように、 投票 メカニズム 新しいマスターを選択し、すべてのスレーブを新しいマスターに接続します。

    2. センチネル機能Redis セントリー モードを一緒に分析しましょう

監視: マスターとスレーブを監視##マスターとスレーブが正常に動作しているか継続的に確認

    マスター生存検知、マスター、スレーブ動作状態検知
    • 通知
    (リマインダー):監視対象サーバーに問題がある場合は、他のセンチネルと Redis サーバーに通知を送信します。
  • フェイルオーバー : ダウンしたマスターとスレーブを切断し、[1 つのスレーブがマスターとして機能する] を選択し、接続します他のスレーブを新しいマスターに接続し、クライアントに新しいサーバー アドレスを通知します。

  • 注: Sentinel は Redis サーバーでもあり、監視サービスのみを提供します。データ管理サービスを提供します。通常、センチネルの数は奇数に設定されます (投票を容易にするため)

  • 3.センチネルを有効にする

変更以下の図に示すように、構成ファイル

sentinel.conf は Redis ディレクトリにあります。

  • 一部の構成の意味以下の図に示すとおりです。 表示:

    Redis セントリー モードを一緒に分析しましょうRedis セントリー モードを一緒に分析しましょう
  • Start Sentinel
  • redis-sentinel filename 
    #filename指的是配置文件名
    #每个哨兵都要配置自己的配置文件
    ログイン後にコピー

    Redis セントリー モードを一緒に分析しましょうSentinel を設定して起動した後、メイン サーバーが起動した後、ダウンすると、
  • 自動的に
  • 投票、マスター/スレーブ切り替えおよびその他のプロセスの実行

  • 4. センチネルの原則

    センチネルは、マスター/スレーブ切り替えプロセスの段階で 3 つのプロセスを経ます。
  • #4.1 モニタリング

各ノードのステータス情報を同期するために使用されます。これらのノードには、マスター、スレーブ、センチネル、つまりシステム全体のすべてのサーバーの情報が含まれます。

主に完了する機能:
各センチネルのステータスを取得します (オンラインかどうかに関係なく):新しく追加されたセンチネルは、システム内の既存のセンチネルと対話する必要があります。

マスターのステータスを取得します (info コマンドを使用して)

次のように内容を取得します

1. master属性
	 runid
	 role:master
2. 各个slave在master中保存的基本信息
ログイン後にコピー

Redis セントリー モードを一緒に分析しましょうすべてのスレーブのステータスを取得します (マスター内のスレーブ情報に基づいてすべてのスレーブに情報指示を送信します)

  • #取得された内容は次のとおりです

    slave属性
    	runid
    	role:slave
    	master_host、master_port
    	offset
    ログイン後にコピー
  • #具体的な内部動作原理は次のとおりです:
      • Sentinel 1 が info コマンドをマスターに送信した後、cmd 接続が確立されます。作成された接続はコマンドの送信に使用されます。
      • cmd 接続が作成された後、現在の状況は次のようになります。 Sentinel 1 側に保存されます。取得したすべての情報について、相手側のマスターも保持している情報を保存します。
      • その後、Sentinel 1 は、次の情報に基づいて info コマンドをスレーブに送信します。保存された情報
      • 新しい Sentinel 2 が追加されると、Sentinel 2 は cmd 接続を確立するためにマスターに info コマンドを送信します。マスター内の情報を取得すると、以前に存在していた Sentinel 1 自体が取得できます。取得した情報を保存します。次に、Sentinel 1 がオンラインであるかどうかを確認し、Sentinel 1 との接続を確立します。この 2 つは相互に情報を交換し、両者の間でスムーズな通信が行われるように ping を続けます。
      • Sentinel 2 はベースです。マスターから取得したスレーブの情報をスレーブから取得して、自身が保存した情報を充実させます。
      • Sentinel 3 を追加する場合も、前のプロセスと同様で、最終的に 3 つの Sentinel がリレーションシップ ネットワーク
      • #リレーションシップ ネットワーク 3 人は相互に情報を交換し、送信します。リレーションシップ ネットワークのこの作業モデルは、
      • パブリッシュおよびサブスクライブ モデル
      • と呼ばれます。
      ##4.2 通知

      通知フェーズ中、センチネルはマスターとスレーブの情報を継続的に取得し、取得した情報をさまざまなセンチネル間で共有する必要があります。

      具体的なプロセスは次のとおりです。

      センチネルは、確立された cmd 接続を通じてマスターとスレーブに hello

      コマンドを送信し、マスターとスレーブの

      ##4.3 フェイルオーバーRedis セントリー モードを一緒に分析しましょう

      ダウンしたマスターをスレーブから切断し、スレーブを選択します。マスターに接続し、他のスレーブを新しいマスターに接続し、クライアントに新しいサーバー アドレスを通知します。

      #具体的なプロセスは次のとおりです:

      # Sentinel 1 はマスターから応答を得ることができず、マスターがマスターであると主観的に判断されます。

      sdown
        (マスターがダウンしていると考えているのは 1 人のセンチネルだけです)
      • センチネル 1 はリレーションシップ ネットワークにメッセージを配信し、そのメッセージをリレーションシップ ネットワークの左上隅に送信します。他のセンチネルへの写真

      • 他のセンチネルがメッセージを受信した後、マスターにメッセージを送信して、マスターがダウンしているかどうかを判断します。また、その結果を、マスターがダウンしていることを確認した後、マークが

        odown
      • に変更されます (センチネルがすべて検出された後、センチネルの半数以上がマスターがダウンしていると信じています)
      • マスターがダウンしていると判断された場合、この時点で新しいマスターを選出する必要があり、どのセンチネルがこのタスクを完了するかをセンチネル間の選挙によって決定する必要があります。具体的なプロセスは次のとおりです。次のように: Redis セントリー モードを一緒に分析しましょう
      • 選挙中、各監視員は 1 票を持ちます。各監視員はイントラネット上の他の監視員に自分が選挙人になることを伝える指示を出します。たとえば、監視員 1 と監視員 2 がこれを発行したとします。選挙指示があり、sentinel3 が申請書を受け取った後、sentinel3 はいずれかの政党に投票します。

        が到着した順序に従って投票します。

        により、票を獲得した政党がもう 1 つの選挙人票を獲得します。このフォームでは、最終的に選挙結果が得られ、最も多くの票を獲得した監視員が選出されます。
        • このプロセスでは失敗する可能性があります。たとえば、最初のラウンドで選挙が成功しなかった場合、その後、選挙が完了するまで第 2 ラウンドと第 3 ラウンドが続きます
        • センチネル間の選挙が完了した後、勝ったセンチネルがスレーブの 1 人を選択し、それをスレーブに変えます。新しいマスターの具体的なプロセスは次のとおりです:
      • Sentinel がサーバー リストから代替マスターを選択する原則:

        最初に除外し、次に選択します

        • オンラインではない外部応答が遅い外部
          • 元のマスターから長時間切断されている外部
          • 除外終了と選択begin
          • 優先度の高いものが選択されます
          • オフセットが大きいものが選択されます (大きいほど、元のマスターが最も多くのデータを同期していることを意味します)
          • Ifまだ選択されていない場合は、runid に基づいて選択されます。
        • 新しいマスターを選択した後、セントリーはサーバーに指示を送信します。
      • ##新しいマスターへ

        slaveof no one

        コマンドを送信
        • #Send slaveof new masterIP port コマンド他のスレーブへ

        • 他のセンチネルにも新しいマスターが誰なのかを伝えます

      • 5. 概要

      • モニタリング フェーズ: 同期情報

      通知フェーズ: 接続の維持フェイルオーバー フェーズ:

      センチネルは問題を検出し、主観的にオフラインとマークします。

      #キャンペーン担当センチネル

      新しいマスターを優先する

        新しいマスターが就任し、他のスレーブが新しい​​マスターに接続します。元のマスターが回復し、スレーブとして新しいマスターに接続します
      1. 推奨される学習:
      2. Redis ビデオ チュートリアル

以上がRedis セントリー モードを一緒に分析しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート