Redis Sentinel、Sentinel の構築プロセス、Sentinel の運用プロセス、選出原理 (主観的オフライン、客観的オフライン、Sentinel リーダーの選出方法) について詳しく説明します。
内部告発者は、バックグラウンドのマスター ホストに障害がないかどうかをパトロールして監視します。障害がある場合は、続行するための 投票の数に基づいて、スレーブ データベースを新しいマスター データベースに自動的に変換します。外部サービス。 [関連する推奨事項: Redis ビデオ チュートリアル ]
は、一般に無人操作とメンテナンスとして知られています。 ######何をするか?
マスター/スレーブ監視: マスター/スレーブ Redis ライブラリが正常に実行されているかどうかを監視します。: クラスターを自動的に監視および保守します。これはデータを保存せず、単なる内部告発です。
1 マスター 2 スレーブ: データの読み取りと保存に使用されます
ステップ
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>マスター サービスに接続するためのパスワードを設定します
# sentinel auth-pass <master-name> <password>
# sentinel00 192.168.157.112 26379 # sentinel01 192.168.157.113 26380 # sentinel02 192.168.157.118 26381
3 つの Sentinel を構成します
sentinel00
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
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
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-sentinel /myredis/sentinel26379.conf --sentinel redis-sentinel /myredis/sentinel26380.conf --sentinel redis-sentinel /myredis/sentinel26381.conf --sentinel
> 后面为自动新增内容
-
マスター ダウンタイムのシミュレーション マスター ホスト# 模拟宕机 shudown
問題
スレーブ機2台のデータは正常ですか? (はい)
ファイルの内容は、動作中に Sentinel によって動的に変更されます。主従関係が切り替わると、設定ファイルの内容が自動的に変更されます。
#sentinel6379.conf ファイル
新master
当一个主从配置中的master失效后,sentinel可以选举出一个新的master用于自动替换原master的工作,主从配置中的其他redis服务自动指向新的master同步数据,一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。
SDOWN(主观不可用)是单个哨兵自己主观检测到的关于master的状态,从sentinel的角度来看,如果发送了PING心跳后,在一定时间内没有收到合法的回复,就到达了SDOQN的条件。
sentinel配置文件中的 down-after-milliseconds 设置了主观下线的时间长度(默认30秒)。
# sentinel down-after-milliseconds <masterName> <timeout> sentinel down-after-milliseconds mymaster 30000
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成为领导者。
整个过程由sentinel自己独立完成,无需人工干涉。
某一个slave被选中成为master
选出新的master的规则,剩余slave节点健康的前提下
执行 slaveof no one 命令让选出来的从节点成为新的主节点,并通过 slaveof 命令让其他节点成为其从节点。
sentinel leader 会对选举出来的新 master 执行 slaveof no one,将其提升为master节点
sentinel leader 向其他slave发送命令,让剩余的slave成为新的master节点的slave。
更多编程相关知识,请访问:编程视频!!
以上がRedis のセンチネルを詳しく理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。