ホームページ  >  記事  >  データベース  >  Redis のセントリー モードについては 1 つの記事で説明しています

Redis のセントリー モードについては 1 つの記事で説明しています

青灯夜游
青灯夜游転載
2022-01-04 10:10:452212ブラウズ

この記事では、Redis のセンチネル モードについて紹介します。お役に立てば幸いです。

Redis のセントリー モードについては 1 つの記事で説明しています

#Redis マスター/スレーブ モード。マスター ノードに障害が発生すると、スレーブ ノードをマスター ノードに昇格できます。同時に、クライアントに次のように通知する必要があります。マスター ノード アドレスを更新します。これは通常は不可能です。OK。したがって、Redis は、この問題を解決するために Redis Sentinel Sentinel メカニズムを提供します。 [関連する推奨事項: Redis ビデオ チュートリアル ]

マスター/スレーブ レプリケーションの問題

Redis のセントリー モードについては 1 つの記事で説明しています

1. マスターの利点スレーブ レプリケーション

  • マスター ノードに障害が発生した場合、スレーブ ノードはマスター ノードにアップグレードされます
  • マスター ノードの読み取り容量を拡張し、マスター ノードの負荷を共有します。マスター ノード

2. 既存の問題

  • スレーブ ノードからマスター ノードをアップグレードするプロセスには手動介入が必要であり、同時に、クライアント Redis サービス アドレスを変更する必要があります。
  • マスター ノードの書き込み機能、ストレージ容量は単一マシンの制限の影響を受けます。
  • パフォーマンス: Redis レプリケーションが中断されると、スレーブ ノードはpsyncを開始します。この時点で同期が失敗した場合は、完全同期が実行されます。メイン データベースが完全バックアップを実行している間、ミリ秒または秒レベルのラグが発生する可能性があります。
Sentinel 実装原則

1. いくつかの概念

主な機能

  • 監視: マスターとスレーブが正常に動作しているかどうかを常にチェックします。サーバーは正常に動作しています
  • 通知: ノードに障害が発生すると、他のノードに通知されます
  • 自動フェイルオーバー:メイン ノードが正常に動作しない場合フェイルオーバーは自動的に実行され、スレーブ ノードの 1 つがマスター ノードにアップグレードされます。
  • 構成プロバイダー: クライアントは単一ノードを構成するのではなく、Sentinel# を構成します。 ## ノード コレクション
主観的オフラインと客観的オフライン

一般的に、各

Sentinel

ノードは他の Sentinel を継続的に監視します。 ノードと Redis ノードは PING を送信し、返信することでオンラインかどうかを確認します。

    主観的オフライン:
  • すべてのマスター ノードとスレーブ ノードについて、Sentinel がターゲット ノードから down-after-milliseconds ミリ秒以内に有効な応答を受信しない場合、ノードは主観的に判断されます。オフライン。
  • オフラインの目的:
  • マスター ノードにのみ使用されます。マスター ノードに障害が発生した場合、Sentinel ノードは sentinel is-master-down-by を渡します- addr コマンドは、他の Sentinel ノードにこのノードのステータスを確認するよう要求します。 <quorum></quorum> を超えるノードがプライマリ ノードに到達できないと判断した場合、Sentinel ノードはプライマリ ノードが客観的にオフラインであると判断します。
2. 動作原理

  • Sentinel は、1 回/秒## の頻度で他の Sentinel ノードおよび Redis マスター/スレーブ ノードに送信します。 #PING コマンド。
  • インスタンスが
  • PING コマンドに対する最後の有効な応答から ダウンアフターミリ秒 を超えている場合、そのインスタンスは Sentinel としてマークされます 主観的なオフライン として。
  • マスターサーバー
  • が主観的にオフラインとしてマークされている場合、このマスターサーバーのすべての Sentinel ノードが 1 回/秒## で監視されています。このマスター サーバーは主観的オフライン状態に入りました。
  • ノードを超えるノードがマスター ノードに到達できないと判断した場合、
  • Sentinel ノードは、マスター ノードは 客観的にはオフラインです メイン サーバーが客観的にオフラインとしてマークされると、Sentinel
  • INFO コマンドをオフライン サーバーのすべてのサーバー (10 から開始) に送信します。回/秒 1 回/秒 に変更されます。 Sentinel
  • ノードはマスター ノードのステータスをネゴシエートします。マスター ノードが
  • SDOWN 状態にある場合、投票により新しい マスター ノード##が自動的に選択されます#。残りの スレーブ ノード データ レプリケーション 新しいプライマリ ノード を指すようにします。 メイン サーバー がオフラインであることに同意する十分な Sentinel
  • がない場合、
  • メイン サーバー 客観的なオフライン ステータスは削除されます。 プライマリ サーバーSentinelPING コマンドに対して 有効な応答を返すと、プライマリ サーバーの 主観的なオフライン ステータス は削除されます。 3. メッセージ損失
Redis はマスター/スレーブ レプリケーション モードを採用しており、マスター ノードがハングアップすると、スレーブ ノードによって同期されているデータが失われる可能性があります。規模が大きければ大きいほど、失うものも大きくなります。

Redis には、メイン ライブラリのリクエスト処理を制限するための 2 つの構成項目 ( min-slaves-to-write

min-slaves-max-lag

) が用意されています。

min-slaves-to-write: この構成項目は、メイン ライブラリがデータ同期を実行できるスレーブ ライブラリの最小数を設定します; min-slaves-max-lag:この設定 この項目は、マスター ライブラリとスレーブ ライブラリの間でデータがコピーされるときに、スレーブ ライブラリがマスター ライブラリに ACK メッセージを送信するための最大遅延 (秒単位) を設定します。

  • これら 2 つの構成項目を組み合わせた後の要件は、
  • メイン ライブラリに接続されているスレーブ ライブラリ内に少なくとも N 個のスレーブ ライブラリがあり、メイン ライブラリでデータをコピーするときに ACK メッセージの遅延が発生することです。ライブラリは T 秒を超えることはできません。それ以外の場合、メイン ライブラリはクライアント リクエストを受信しなくなります
したがって、Sentine はメッセージがまったく失われないことを保証することはできませんが、メッセージの損失をできるだけ少なくするよう努めることもできます。

概要

Sentinel

は高可用性の問題を解決しますが、マスター ノードの単一ノード拡張の問題は解決しません。

プログラミング関連の知識について詳しくは、

プログラミング入門をご覧ください。 !

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

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。