首页 > 其他 > 详细

redis哨兵机制

时间:2020-07-12 23:56:00      阅读:104      评论:0      收藏:0      [点我收藏+]

什么是哨兵

Redis-Sentinel是用于管理Redis集群,该系统执行以下三个任务:

  1.监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正常

  2.提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知

  3.自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器Sentinel(哨兵)集群搭建。

 

技术分享图片

 

  多个哨兵,不仅同时监控主从数据库,而且哨兵之间互为监控

 

哨兵机制搭建

  1、配置主从redis集群在redis从机配置中指定redis主机

    

slaveof 127.0.0.1<master ip> 6379<master port>

  2、配置哨兵 重命名 sentinel.conf文件一般为端口号前加2 并修改

# 添加守护进程模式
daemonize yes
# 添加指明日志文件名
logfile "/opt/redis/6379/sentinel26379.log"
# 修改工作目录
dir "/opt/redis/6379"
# 修改启动端口
port 26379
# 关闭保护模式
protected-mode no
# 修改sentinel monitor
sentinel monitor mymaster 192.168.29.128 6379 2
依次修改其他 sentinel.conf文件
说明:
mymaster :监控主数据的名称,可自定义(需要替换全部的mymaster),可以使用大小写字母和“.-_”符号 
192.168.29.128:监控的主数据库的IP 
6379:监控的主数据库的端口
2:最低通过票数

  

  3、启动redis和哨兵机制

redis-sentinel /opt/redis/6379/26379.conf 或者 redis-server /opt/redis/6379/26379.conf --sentinel

  

Sentinel原理介绍

首先解释2个名词:SDOWN和ODOWN.

SDOWN:subjectively down,直接翻译的为”主观”失效,即当前sentinel实例认为某个redis服务为”不可用”状态.

ODOWN:objectively down,直接翻译为”客观”失效,即多个sentinel实例都认为master处于”SDOWN”状态,那么此时master将处于ODOWN,ODOWN可以简单理解为master已经被集群确定为”不可用”,将会开启failover

SDOWN与ODOWN转换过程:
  1. 每个sentinel实例在启动后,都会和已知的slaves/master以及其他sentinels建立TCP连接,并周期性发送PING(默认为1秒),在交互中,如果redis-server无法在”down-after-milliseconds”时间内响应或者响应错误信息,都会被认为此redis-server处于SDOWN状态.

  2. SDOWN的server为master,那么此时sentinel实例将会向其他sentinel间歇性(一秒)发送”is-master-down-by-addr <ip> <port>”指令并获取响应信息,如果足够多的sentinel实例检测到master处于SDOWN,那么此时当前sentinel实例标记master为ODOWN…其他sentinel实例做同样的交互操作.配置项”sentinel monitor <mastername><masterip> <masterport> <quorum>”,如果检测到master处于SDOWN状态的slave个数达到<quorum>,那么此时此sentinel实例将会认为master处于ODOWN.

每个sentinel实例将会间歇性(10秒)向master和slaves发送”INFO”指令,如果master失效且没有新master选出时,每1秒发送一次”INFO”;”INFO”的主要目的就是获取并确认当前集群环境中slaves和master的存活情况.

经过上述过程后,所有的sentinel对master失效达成一致后,开始failover.

Sentinel与slaves”自动发现”机制:

  在sentinel的配置文件中,都指定了port,此port就是sentinel实例侦听其他sentinel实例建立链接的端口.在集群稳定后,最终会每个sentinel实例之间都会建立一个tcp链接,此链接中发送”PING”以及类似于”is-master-down-by-addr”指令集,可用用来检测其他sentinel实例的有效性以及”ODOWN”和”failover”过程中信息的交互.在sentinel之间建立连接之前,sentinel将会尽力和配置文件中指定的master建立连接.sentinel与master的连接中的通信主要是基于pub/sub来发布和接收信息,发布的信息内容包括当前sentinel实例的侦听端口.

 

redis哨兵机制

原文:https://www.cnblogs.com/happily-ye/p/13290601.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!