この記事では、Redis Sentinel モードの原理を深く理解し、Sentinel でできることについて説明し、Sentinel メソッドと Sentinel ワークフローを開始します。
上記では、Redis マスター/スレーブ レプリケーション の原理を紹介しています。これにより、Redis データのバックアップの問題が解決されます。マスター ノードは、後で自動的に選択されません。新しいマスター ノードでは、スレーブ ノードをマスター ノードとして手動で設定する必要がありますが、これは非効率的であり、自動フェイルオーバーを実現できません。Redis は高可用性ソリューション Sentinel を公式に提供しています。
1. Redis センチネルとは何ですか?
Redis Sentinel は、Redis の公式高可用性ソリューションです。 Redis Sentinel は Redis に高可用性を提供します。実際には、これは、Sentinel を使用すると、特定の種類の障害に耐性があり、人間の介入なしで自動的にフェイルオーバーを実装する Redis クラスターを作成できることを意味します。 [関連する推奨事項: Redis ビデオ チュートリアル ]
2. Sentinel でできることは何ですか?
1. Redis クラスター ノード (マスター レプリカ) と Sentinel ノードの健全性ステータスを監視します
2. 自動フェイルオーバー: マスターに障害が発生した場合、Sentinel はフェイルオーバーを実装し、 customer 新しいマスターに接続します。
3. 通知: API を通じて、管理者と開発者に通知を送信できます。監視されている Redis インスタンスに障害が発生しました。
4. 構成センター: クライアントは Sentinel に接続されており、Sentinel は次のことを行うことができます。マスターはクライアントにノード情報を返します
3. Sentinel メソッドを開始します
1. redis-sentinel /path/to/sentinel.conf
2. redis-server /path/to/sentinel.conf --sentinel
sentinel.conf の設定手順は次のとおりです
# 配置需要监控的master节点信息 2代表法定人数 作用是表示需要最少需要多少个sentinel节点同意 #master节点不可达才标记为客观下线 #举例 5个sentinel实例 quorum设置成2 那么有2个sentinel节点认为master不可达, #则其中一个会启动故障转移#如果至少有三个哨兵可到达,故障转移将被授权并实际启动。 sentinel monitor mymaster 127.0.0.1 6379 2 #只需要配置master sentinel会自动检测slave信息 sentinel down-after-milliseconds mymaster 60000 #如果master在指定时间内没有响应ping命令/或报错,则认为主观下线了。 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1 #指定故障转移的时候,同时支持多少个replica并行的与master同步数据,越小故障转移越久 #以上配置可以通过SENTINEL SET command.来实时修改。 sentinel monitor resque 192.168.1.3 6380 4 sentinel down-after-milliseconds resque 10000 sentinel failover-timeout resque 180000 sentinel parallel-syncs resque 5
注:
Redis -sentinel は設定ファイルの起動を使用する必要があり、再起動は設定ファイルに従って復元する必要があり、ポート 26379 がデフォルトで開かれ、相互アクセスを容易にするために Sentinel 間でポート アクセスが開かれている必要があります。
4. Sentinel ワークフロー
1. まず、Redis のパブリッシュ/サブスクライブ メカニズムを通じて、センチネル間で動的な認識が実現されます。
#2. センチネルはマスターが死んだことをどのように感知しますか?
ここには 2 つの状況があり、1 つは主観的にマスターがオフラインになった場合、もう 1 つはマスターが客観的にオフラインになった場合です。
主観的オフライン: 各センチネルは 1 秒ごとにマスターに ping コマンドを送信します。マスターがミリ秒以内に応答しない場合、センチネル ノードは主観的にマスターがオフラインであるとみなします。
客観的オフライン:
主観的にオフラインであるノードがマスター ノードの場合、センチネル ノードはコマンド sentinel を渡します。 is-masterdown-by-addr
は、マスター ノード上の他のセンチネル ノードの判断を求めます。クォーラムの数 (センチネル設定で設定されたクォーラム) を超えると、センチネル ノードは実際に問題があると判断します。ほとんどのセンチネル ノードはオフライン操作に同意します。これは、客観的にオフラインであることを意味します。
目標オフラインはマスター ノードにのみ有効であり、フェイルオーバーがトリガーされることに注意してください。
3、マスターはオフラインであり、フェイルオーバーが必要です
これは 2 つに分かれています手順では、まず Sentinel マスター ノードを選択し、Sentinel マスター ノードを介して Redis フェールオーバーを実行する必要があります。
まず、センチネルがリーダーを選出します。 raft アルゴリズム (状態コンセンサス アルゴリズム) を使用します。
各 Sentinel ノードはリーダーになることができ、Redis クラスターのマスター ノードが主観的にオフラインであることを Sentinel ノードが確認すると、他の Sentinel ノードに自身をリーダーとして選出するよう要求します。要求された Sentinel ノードが他の Sentinel ノードの選挙要求に同意していない場合は、その要求に同意します (選挙投票数は 1)。そうでない場合は、同意しません。
Sentinel ノードによって取得された選挙投票数がリーダーの最小投票数 (クォーラムの最大値と Sentinel ノードの数 / 2 1) に達すると、Sentinel ノードがリーダーとして選出されます。リーダー。そうでない場合は、選挙が繰り返されます。
Raft の中心的なアイデア: 早い者勝ち、少数派は多数派に従う。
センチネルがマスター ノードを選択した後、センチネル マスター ノードは Redis クラスター マスター ノードを選択して、新しいクラスター関係を構築する必要があります。
新しい Redis マスター ノードを選択するための基準は次のとおりです:
1. センチネルから切断する時間。レプリカ スレーブ
2 とレプリカ プライオリティをフィルタリングして、設定されたホスト タイムアウト時間 (ミリ秒後のダウン) を超えてメイン監視サーバーから切断されていることが判明しました。レプリカ優先度が低いものを優先します。
3. 優先度が同じ場合、コピー オフセットは処理されています。値が大きいほど優先度が高く、ビジネスシナリオの機能と合致しています。
4. コピー オフセットが同じ場合は、実行中の ID を確認します。小さいものを好みます。
マスター ノードを選択したら、クラスター関係の維持を開始します。
1. センチネル ノード、新しいマスター ノードにスレーブ no one コマンドを送信して、独立したノードにします
2. センチネル ノード、slaveof ip ポートを他のノードに送信し、それに従います。マスターノード
5. 概要
上記の分析により、sentinel は定期的な監視方法により自動フェイルオーバーを実現できましたが、状況などのいくつかの問題がまだ残っています。この状況では、データ損失の可能性があり、単一マシンのパフォーマンスが制限されている場合、水平方向に拡張することができません。
プログラミング関連の知識について詳しくは、プログラミング入門をご覧ください。 !
以上がRedis のセントリー モードの原理の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Redisの主な機能には、速度、柔軟性、豊富なデータ構造のサポートが含まれます。 1)速度:Redisはメモリ内データベースであり、読み取り操作はほとんど瞬間的で、キャッシュとセッション管理に適しています。 2)柔軟性:複雑なデータ処理に適した文字列、リスト、コレクションなど、複数のデータ構造をサポートします。 3)データ構造のサポート:さまざまなビジネスニーズに適した文字列、リスト、コレクション、ハッシュテーブルなどを提供します。

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キーを保持しているシャードに常にルーティングされます。


ホット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 プラットフォームで実行できます。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

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

SublimeText3 中国語版
中国語版、とても使いやすい
