この記事では、Redis に関する関連知識を提供します。主にセンチネルの概念、センチネルの役割、センチネルの有効化、センチネルの原理など、センチネル モードに関連する問題を紹介します。皆さんのお役に立てれば幸いです。
推奨学習: Redis チュートリアル
Sentinel モード
1. Sentinel の概念
マスター マルチ スレーブ構成では、マスターがダウンした場合、複数のスレーブの中から 1 つを新しいマスターとして選択する必要があります。 Redis のセンチネル メカニズム
-
Sentinel (センチネル) は、障害発生時に マスター/スレーブ構造内の各サーバーを監視するために使用される分散システムです次の図に示すように、 投票 メカニズム が 新しいマスターを選択し、すべてのスレーブを新しいマスターに接続します。
2. センチネル機能
監視: マスターとスレーブを監視##マスターとスレーブが正常に動作しているか継続的に確認
- マスター生存検知、マスター、スレーブ動作状態検知
-
- 通知
フェイルオーバー : ダウンしたマスターとスレーブを切断し、[1 つのスレーブがマスターとして機能する] を選択し、接続します他のスレーブを新しいマスターに接続し、クライアントに新しいサーバー アドレスを通知します。
注: Sentinel は Redis サーバーでもあり、監視サービスのみを提供します。データ管理サービスを提供します。通常、センチネルの数は奇数に設定されます (投票を容易にするため)
3.センチネルを有効にする
変更以下の図に示すように、構成ファイル
sentinel.conf は Redis ディレクトリにあります。
-
一部の構成の意味以下の図に示すとおりです。 表示:
Start Sentinel -
redis-sentinel filename #filename指的是配置文件名 #每个哨兵都要配置自己的配置文件
Sentinel を設定して起動した後、メイン サーバーが起動した後、ダウンすると、
自動的に - 投票、マスター/スレーブ切り替えおよびその他のプロセスの実行
-
4. センチネルの原則
センチネルは、マスター/スレーブ切り替えプロセスの段階で 3 つのプロセスを経ます。 #4.1 モニタリング
各ノードのステータス情報を同期するために使用されます。これらのノードには、マスター、スレーブ、センチネル、つまりシステム全体のすべてのサーバーの情報が含まれます。
主に完了する機能:マスターのステータスを取得します (info コマンドを使用して)
次のように内容を取得します1. master属性 runid role:master 2. 各个slave在master中保存的基本信息
すべてのスレーブのステータスを取得します (マスター内のスレーブ情報に基づいてすべてのスレーブに情報指示を送信します)
- #取得された内容は次のとおりです
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 人は相互に情報を交換し、送信します。リレーションシップ ネットワークのこの作業モデルは、
- パブリッシュおよびサブスクライブ モデル と呼ばれます。
通知フェーズ中、センチネルはマスターとスレーブの情報を継続的に取得し、取得した情報をさまざまなセンチネル間で共有する必要があります。
具体的なプロセスは次のとおりです。
センチネルは、確立された cmd 接続を通じてマスターとスレーブに hello
コマンドを送信し、マスターとスレーブの##4.3 フェイルオーバー
ダウンしたマスターをスレーブから切断し、スレーブを選択します。マスターに接続し、他のスレーブを新しいマスターに接続し、クライアントに新しいサーバー アドレスを通知します。
#具体的なプロセスは次のとおりです:# Sentinel 1 はマスターから応答を得ることができず、マスターがマスターであると主観的に判断されます。
sdown- (マスターがダウンしていると考えているのは 1 人のセンチネルだけです)
センチネル 1 はリレーションシップ ネットワークにメッセージを配信し、そのメッセージをリレーションシップ ネットワークの左上隅に送信します。他のセンチネルへの写真
-
他のセンチネルがメッセージを受信した後、マスターにメッセージを送信して、マスターがダウンしているかどうかを判断します。また、その結果を、マスターがダウンしていることを確認した後、マークが
odown に変更されます (センチネルがすべて検出された後、センチネルの半数以上がマスターがダウンしていると信じています) -
マスターがダウンしていると判断された場合、この時点で新しいマスターを選出する必要があり、どのセンチネルがこのタスクを完了するかをセンチネル間の選挙によって決定する必要があります。具体的なプロセスは次のとおりです。次のように: - 選挙中、各監視員は 1 票を持ちます。各監視員はイントラネット上の他の監視員に自分が選挙人になることを伝える指示を出します。たとえば、監視員 1 と監視員 2 がこれを発行したとします。選挙指示があり、sentinel3 が申請書を受け取った後、sentinel3 はいずれかの政党に投票します。
が到着した順序に従って投票します。
により、票を獲得した政党がもう 1 つの選挙人票を獲得します。このフォームでは、最終的に選挙結果が得られ、最も多くの票を獲得した監視員が選出されます。- このプロセスでは失敗する可能性があります。たとえば、最初のラウンドで選挙が成功しなかった場合、その後、選挙が完了するまで第 2 ラウンドと第 3 ラウンドが続きます
- センチネル間の選挙が完了した後、勝ったセンチネルがスレーブの 1 人を選択し、それをスレーブに変えます。新しいマスターの具体的なプロセスは次のとおりです:
- Sentinel がサーバー リストから代替マスターを選択する原則:
最初に除外し、次に選択します
- オンラインではない外部応答が遅い外部
- 元のマスターから長時間切断されている外部
- 除外終了と選択begin
- 優先度の高いものが選択されます
- オフセットが大きいものが選択されます (大きいほど、元のマスターが最も多くのデータを同期していることを意味します)
- Ifまだ選択されていない場合は、runid に基づいて選択されます。
新しいマスターを選択した後、セントリーはサーバーに指示を送信します。
- オンラインではない外部応答が遅い外部
- ##新しいマスターへ
slaveof no one
コマンドを送信#Send
slaveof new masterIP port
コマンド他のスレーブへ他のセンチネルにも新しいマスターが誰なのかを伝えます
- 5. 概要 モニタリング フェーズ: 同期情報
通知フェーズ: 接続の維持フェイルオーバー フェーズ:
センチネルは問題を検出し、主観的にオフラインとマークします。#キャンペーン担当センチネル
新しいマスターを優先する
- 新しいマスターが就任し、他のスレーブが新しいマスターに接続します。元のマスターが回復し、スレーブとして新しいマスターに接続します
- 推奨される学習:
- Redis ビデオ チュートリアル
-
以上がRedis セントリー モードを一緒に分析しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Redisのコア関数は、高性能のメモリ内データストレージおよび処理システムです。 1)高速データアクセス:Redisはデータをメモリに保存し、マイクロ秒レベルの読み取り速度と書き込み速度を提供します。 2)豊富なデータ構造:文字列、リスト、コレクションなどをサポートし、さまざまなアプリケーションシナリオに適応します。 3)永続性:RDBとAOFを介してディスクにデータを持続します。 4)サブスクリプションを公開:メッセージキューまたはリアルタイム通信システムで使用できます。

Redisは、次のようなさまざまなデータ構造をサポートしています。1。文字列、単一価値データの保存に適しています。 2。キューやスタックに適したリスト。 3.非重複データの保存に使用されるセット。 4。ランキングリストと優先キューに適した注文セット。 5。オブジェクトまたは構造化されたデータの保存に適したハッシュテーブル。

Redisカウンターは、Redisキー価値ペアストレージを使用して、カウンターキーの作成、カウントの増加、カウントの減少、カウントのリセット、およびカウントの取得など、カウント操作を実装するメカニズムです。 Redisカウンターの利点には、高速速度、高い並行性、耐久性、シンプルさと使いやすさが含まれます。ユーザーアクセスカウント、リアルタイムメトリック追跡、ゲームのスコアとランキング、注文処理などのシナリオで使用できます。

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。

Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

RedisクラスターでのZsetの使用:Zsetは、要素をスコアに関連付ける順序付けられたコレクションです。シャード戦略:a。ハッシュシャーディング:ZSTキーに従ってハッシュ値を分配します。 b。範囲シャード:要素スコアに従って範囲に分割し、各範囲を異なるノードに割り当てます。操作の読み取りと書き込み:a。読み取り操作:ZSetキーが現在のノードのシャードに属している場合、ローカルで処理されます。それ以外の場合は、対応するシャードにルーティングされます。 b。書き込み操作:Zsetキーを保持しているシャードに常にルーティングされます。

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1
使いやすく無料のコードエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
