Redis Sentinel、Sentinel の構築プロセス、Sentinel の運用プロセス、選出原理 (主観的オフライン、客観的オフライン、Sentinel リーダーの選出方法) について詳しく説明します。
Redis Sentinel (センチネル)
センチネルとは何ですか?
内部告発者は、バックグラウンドのマスター ホストに障害がないかどうかをパトロールして監視します。障害がある場合は、続行するための 投票の数に基づいて、スレーブ データベースを新しいマスター データベースに自動的に変換します。外部サービス。 [関連する推奨事項: Redis ビデオ チュートリアル ]
は、一般に無人操作とメンテナンスとして知られています。 ######何をするか?
マスター/スレーブ監視: マスター/スレーブ Redis ライブラリが正常に実行されているかどうかを監視します。- メッセージ通知: Sentinel はフェイルオーバー結果をクライアントに送信できます
- フェイルオーバー: スレーブの 1 つを新しいマスターとして使用します
- 構成センター: クライアントはセンチネルに接続することで現在の Redis サービスのマスター ノード アドレスを取得します
- Case
アーキテクチャ
3 センチネル: クラスターを自動的に監視および保守します。これはデータを保存せず、単なる内部告発です。
1 マスター 2 スレーブ: データの読み取りと保存に使用されます
ステップ
- redis インストール パスの Sentinel.conf を myredis ディレクトリにコピーします
cp sentinel.conf /myredis/sentinel26379.conf
設定ファイルを変更しますvim sentinel26379.conf bind 0.0.0.0 # protected-mode yes 修改为 protected-mode no protected-mode no # daemonize no 修改为 daemonize yes daemonize yes # port port 26379 # pid文件名字,pidfile pidfile /var/run/redis_26379.pid # log文件名字,logfile(修改 logfile "" 为 logfile "/myredis/26379.log") logfile "/myredis/26379.log" # 指定当前的工作目录(修改 dir /temp 为 dir /myredis) dir /myredis
マスター サーバーを監視対象に設定しますクォーラム: オフラインで目的を確認する監視員の最小数。フェイルオーバーを承認するための投票の定足数。
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
マスター サービスに接続するためのパスワードを設定します
ネットワークが信頼できないことはわかっています。監視員は、ネットワークが信頼性の高いものであると誤って考えることがあります。ネットワークの輻輳により、新しいものを作成しました。マスター redis が停止しています。センチネル クラスター環境では、複数のセンチネルが相互に通信して、マスターが本当に停止しているかどうかを確認する必要があります。クォーラム パラメーターは、目的のオフラインの基礎です。つまり、少なくとも次のことを意味しますクォーラム監視員はこう考えます。マスターに障害が発生すると、マスターはオフラインになり、フェイルオーバーされます。場合によっては、センチネル ノードが独自のネットワーク上の理由でマスターに接続できないことがありますが、現時点ではマスターに障害はありません。したがって、複数のセンチネルは、次の手順に進む前にマスターに問題があることに同意する必要があります。次のステップの操作により、公平性と高可用性が保証されます。# sentinel auth-pass <master-name> <password>
3 つの Linux をインストールします
IP とポートは
# sentinel00 192.168.157.112 26379 # sentinel01 192.168.157.113 26380 # sentinel02 192.168.157.118 26381
3 つの Sentinel を構成します
sentinelxxxx.conf ファイル
sentinel00
sentinel26379.conf
bind 0.0.0.0 daemonize yes protected-mode no port 26379 logfile "/myredis/sentinel26379.log" pidfile /var/run/redis-sentinel26379.pid dir /myredis sentinel monitor mymaster 192.168.157.115 6379 2 sentinel auth-pass mymaster 1234
sentinel01
sentinel26380.conf
bind 0.0.0.0 daemonize yes protected-mode no port 26380 logfile "/myredis/sentinel26380.log" pidfile /var/run/redis-sentinel26380.pid dir /myredis sentinel monitor mymaster 192.168.157.115 6379 2 sentinel auth-pass mymaster 1234
sentinel02
sentinel26381.conf
bind 0.0.0.0 daemonize yes protected-mode no port 26381 logfile "/myredis/sentinel26381.log" pidfile /var/run/redis-sentinel26381.pid dir /myredis sentinel monitor mymaster 192.168.157.115 6379 2 sentinel auth-pass mymaster 1234
Test
- 前の Redis レプリケーションに基づいて、1 つのマスターと 2 つのスレーブを開始してマスター/スレーブ レプリケーションが正常かどうかをテストし、情報レプリケーションを入力して正常かどうかを確認します。通常
- 3 つの監視を開始し、監視を完了します
redis-sentinel /myredis/sentinel26379.conf --sentinel redis-sentinel /myredis/sentinel26380.conf --sentinel redis-sentinel /myredis/sentinel26381.conf --sentinel
マスター/スレーブ レプリケーションをテストします。すべて問題ありません- ログの表示
> 后面为自动新增内容
-
# 模拟宕机 shudown
問題
スレーブ機2台のデータは正常ですか? (はい)
- 残りの 2 台のマシンから新しいマスターが選択されますか? (はい)
- 再起動後、以前のマスターが再び引き継がれ、再びマスターになりますか? (いいえ)
- 設定ファイルを比較します。
ファイルの内容は、動作中に Sentinel によって動的に変更されます。主従関係が切り替わると、設定ファイルの内容が自動的に変更されます。
#sentinel6379.conf ファイル
新master
哨兵运行流程和选举原理
当一个主从配置中的master失效后,sentinel可以选举出一个新的master用于自动替换原master的工作,主从配置中的其他redis服务自动指向新的master同步数据,一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。
SDown主观下线(Subjectively Down)
SDOWN(主观不可用)是单个哨兵自己主观检测到的关于master的状态,从sentinel的角度来看,如果发送了PING心跳后,在一定时间内没有收到合法的回复,就到达了SDOQN的条件。
sentinel配置文件中的 down-after-milliseconds 设置了主观下线的时间长度(默认30秒)。
# sentinel down-after-milliseconds <masterName> <timeout> sentinel down-after-milliseconds mymaster 30000
ODown客观下线(Objectively Down)
ODOWN需要一定数量的sentinel,多个哨兵达成一致意见才能确认一个master客观上已经宕机了。
# sentinel monitor <master-name> <ip> <redis-port> <quorum> sentinel monitor mymaster 127.0.0.1 6379 2
选举出领导者哨兵
当主节点被判断客观下线后,各个哨兵节点会进行协商,先选举出一个领导者哨兵节点,并由该领导者哨兵节点进行failover(故障迁移)
领导者哨兵如何选出来的?
Raft算法
监视该主节点的所有哨兵都有可能被选为领导者,选举使用的算法是Raft算法;Raft算法的基本思路是先到先得,即在一轮选举中,哨兵A向B发送成为领导者的申请,如果B没有同意过其他哨兵,则会同意A成为领导者。
选新的master(im)
整个过程由sentinel自己独立完成,无需人工干涉。
新主登基
某一个slave被选中成为master
选出新的master的规则,剩余slave节点健康的前提下
- redis.conf文件中,优先级slave-priority或者replica-priority最高节点(数字越小优先级越高)
- 复制偏移量offset最大的从节点。
- 最小Run ID的从节点。
群臣俯首
执行 slaveof no one 命令让选出来的从节点成为新的主节点,并通过 slaveof 命令让其他节点成为其从节点。
sentinel leader 会对选举出来的新 master 执行 slaveof no one,将其提升为master节点
sentinel leader 向其他slave发送命令,让剩余的slave成为新的master节点的slave。
旧主拜服
- 将之前的已经下线的旧master设置为新选出的新master的从节点,当旧master重新上线后,它会成为新master的从节点
- sentinel leader 会让原来的master降级为slave并恢复正常工作。
哨兵使用建议
- 哨兵节点数量应该为多个,哨兵本身应该为集群,保证高可用
- 哨兵节点数量应该是奇数
- 各个哨兵节点的配置应该一致
- 如果哨兵节点部署在docker等容器里面,尤其要注意端口的正确映射
- 哨兵集群 + 主从复制,并不能保证数据零丢失
更多编程相关知识,请访问:编程视频!!
以上が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 サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

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

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