Redis 哨兵原理分析

博文目录

文章目录


哨兵选举主节点

当一个master服务器被某sentinel视为下线状态后,该sentinel会与其他sentinel协商选出sentinel的leader进行故障转移工作。

每个发现master服务器进入下线状态的sentinel都可以要求其他sentinel选自己为sentinel的leader,选举是先到先得。同时每个sentinel每次选举都会自增配置纪元(选举周期),每个纪元中只会选择一个sentinel的leader。如果所有超过一半的sentinel选举某sentinel作为leader。之后该sentinel进行故障转移操作,从存活的slave中选举出新的master,这个选举过程跟集群的master选举很类似。

哨兵模式就算只有一个哨兵节点,redis的主从也能正常运行以及选举master,如果master挂了,那唯一的那个哨兵节点就是哨兵leader了,可以正常选举新master。

不过为了高可用一般都推荐至少部署三个哨兵节点。为什么推荐奇数个哨兵节点原理跟集群奇数个master节点类似。

当redis主节点如果挂了,哨兵集群会重新选举出新的redis主节点,同时会修改所有sentinel节点配置文件的集群元数据信息,比如6379的redis如果挂了,假设选举出的新主节点是6380,则sentinel文件里的集群元数据信息会变成如下所示:

redis.sentinel.config.26379

sentinel known-replica mymaster 116.62.162.48 6379
sentinel known-replica mymaster 116.62.162.48 6381
sentinel known-sentinel mymaster 172.16.138.202 26380 1012f4eb61156494a10eec863b4f698c160487c6
sentinel known-sentinel mymaster 172.16.138.202 26381 aba18c9c846e272ad147cfac9245554801aa8701

同时还会修改sentinel文件里之前配置的mymaster对应的6379端口,改为6380

redis.sentinel.config.26379

sentinel monitor mymaster 116.62.162.48 6380 2

当6379的redis实例再次启动时,哨兵集群根据集群元数据信息就可以将6379端口的redis节点作为从节点加入集群

也可从哨兵日志中看到选举过程

logfile.redis.sentinel.26379.log

14899:X 04 Nov 2020 13:39:40.901 # Configuration loaded
14900:X 04 Nov 2020 13:39:40.908 * Running mode=sentinel, port=26379.
14900:X 04 Nov 2020 13:39:40.908 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
14900:X 04 Nov 2020 13:39:40.912 # Sentinel ID is 8902bc48943a310b9877ce7705fe6fdf05427e78
14900:X 04 Nov 2020 13:39:40.912 # +monitor master mymaster 116.62.162.48 6379 quorum 2
14900:X 04 Nov 2020 13:39:40.913 * +slave slave 116.62.162.48:6380 116.62.162.48 6380 @ mymaster 116.62.162.48 6379
14900:X 04 Nov 2020 13:39:40.915 * +slave slave 116.62.162.48:6381 116.62.162.48 6381 @ mymaster 116.62.162.48 6379
14900:X 04 Nov 2020 13:39:42.912 * +sentinel sentinel 1012f4eb61156494a10eec863b4f698c160487c6 172.16.138.202 26380 @ mymaster 116.62.162.48 6379
14900:X 04 Nov 2020 13:39:42.933 * +sentinel sentinel aba18c9c846e272ad147cfac9245554801aa8701 172.16.138.202 26381 @ mymaster 116.62.162.48 6379
14900:X 04 Nov 2020 13:41:26.744 # +sdown master mymaster 116.62.162.48 6379
14900:X 04 Nov 2020 13:41:26.891 # +new-epoch 1
14900:X 04 Nov 2020 13:41:26.894 # +vote-for-leader 1012f4eb61156494a10eec863b4f698c160487c6 1
14900:X 04 Nov 2020 13:41:27.286 # +config-update-from sentinel 1012f4eb61156494a10eec863b4f698c160487c6 172.16.138.202 26380 @ mymaster 116.62.162.48 6379
14900:X 04 Nov 2020 13:41:27.287 # +switch-master mymaster 116.62.162.48 6379 116.62.162.48 6380
14900:X 04 Nov 2020 13:41:27.287 * +slave slave 116.62.162.48:6381 116.62.162.48 6381 @ mymaster 116.62.162.48 6380
14900:X 04 Nov 2020 13:41:27.287 * +slave slave 116.62.162.48:6379 116.62.162.48 6379 @ mymaster 116.62.162.48 6380
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值