从零开始Redis(十八)之哨兵

112 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

🍊作者简介:少年不想说话,努力长大

🍊往期回顾:从零开始Redis(十七)

🍊近期目标:写完基础源码,点赞👍🏼、收藏⭐、留言📩

前面我们说了主从复制、读写分离,但是这些只是保证了高并发以及持久化的可靠性,但并不能保证我们服务的高可用性,万一我们哪天主机器崩了还需要我们手动去处理重启选主;那这部分谁来顶?怎么办?看哨兵;

什么是哨兵 

对于上面的问题这个时候就需要我们的哨兵来进行一些处理了;先理解下什么是哨兵?哨兵首先它是分布式的,它会对我们的redis的主从设备进行监听, 哨兵其实就是redis的一个不提供服务的服务,它只用于redis的监测,它一般随着我们的redis服务的机器一起启动;我们可以通过

redis-sentinel sentinel.conf

进行启动, 这里要好好看看我们的配置文件,记住密码最好保持一致,避免切换出事;

sentinel monitor <master-name> <ip> <redis-port> <quorum> 

这个配置的意思表示要监控的主节点IP,该主节点的名字是master-name,端口号是redis-port,至少要quorum个哨兵同意才可以定为主节点故障;

当我们的主机掉线哨兵监测不到心跳了会从从机中进行选主(下面会说怎么做), 然后将其他节点连到新主机上作为从机,如果此时主机又上线了,那么它依然是个从机,通常的哨兵至少有三个且单数递增,如果一个掉线了,还有一个可以实现选举转移,一个负责监听,如果就配两个,掉了一个那就只剩一个了那又如何实现监控和选举呢; 

如何监测故障的

当某个哨兵发现主节点掉线后它不是立即让主机易主(主观掉线意识),而是通知其他哨兵,等待其他哨兵通知能不能监测到主机,在达到一定数量后(我们上面设置的quorum), 即会通知下线,下线后哨兵会继续投票通过raft算法进行选主操作,将从机变为主机,并将监控的从机连接切换到新的主机上(这里我们了解下我们的哨兵之间也会互相监听),我们注意下我们的哨兵判断下线的标准是我们设定的规定时间内没有反应才判为下线,默认是30s;哨兵模式会自动切换对应机器的配置,完成迁移工作;

经过前面几篇的操作,我们就可以实现一个稳定的可持久化的满足大场景需要的redis环境了,它能满足我们的日常项目了,如果不在意,依然可以沿用之前的分布式分片存储,通过其他方式实现高可用高并发,总之选择最合适的最好;好啦🥗🥗🥗;

结束结束,那就🛴🛴🛴

如果对你有所帮助

点个赞呗