Ausführliche Erläuterung von Redis Sentinel, dem Sentinel-Konstruktionsprozess, dem Sentinel-Betriebsprozess und dem Wahlprinzip (subjektives Offline, objektives Offline, wie man den Sentinel-Anführer wählt).
Der Whistleblower prüft und überwacht, ob der Hintergrund-Master-Host fehlerhaft ist, und konvertiert basierend auf der Anzahl der Stimmen automatisch eine Slave-Datenbank in eine neue Master-Datenbank, um externe Dienste fortzusetzen. [Verwandte Empfehlungen: Redis-Video-Tutorial]
Allgemein bekannt als unbeaufsichtigter Betrieb und Wartung.
Schritte
Kopieren Sie sentinel.conf im Redis-Installationspfad in das Myredis-Verzeichnis
Stellen Sie den zu überwachenden Master-Server ein
cp sentinel.conf /myredis/sentinel26379.conf
Installieren Sie drei Linux-IPs und -Ports sentinel01
sentinel26380.confvim 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
sentinel26381 .conf
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
Test
Starten Sie basierend auf der vorherigen Redis-Replikation 1 Master und 2 Slaves, um zu testen, ob die Master-Slave-Replikation normal ist, und geben Sie die Informationsreplikation ein, um zu überprüfen, ob sie normal ist
# sentinel auth-pass <master-name> <password>
Ausfallzeit des Masters simulieren
Master-Host
# sentinel00 192.168.157.112 26379 # sentinel01 192.168.157.113 26380 # sentinel02 192.168.157.118 26381
Vergleichen Sie die Konfigurationsdatei
sentinel6379.conf-Datei
alter Meister
新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。
更多编程相关知识,请访问:编程视频!!
Das obige ist der detaillierte Inhalt vonVerstehen Sie den Sentinel in Redis im Detail. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!