笔记内容来自B站博主《遇见狂神说》:Redis视频链接
小伙伴们可以看一下上一篇我的Redis笔记 —— 【从0到1进阶Redis】主从复制
这样可以更好的理解原理。
一、概述
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们有限考虑哨兵模式。Redis从2.8开始正式提供了 Sentinel(哨兵)架构来解决这个问题。
哨兵模式能够在后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
哨兵模式是一种特殊的模式,首先 Redis 提供了哨兵的命令,哨兵了一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待 Redis 服务器响应,从而监控运行的多个 Redis 示例。
单哨兵模式:
单哨兵有两个作用:
- 通过发送命令,让 Redis 服务器返回监控其运行状态,包括主服务器和从服务器。
- 当哨兵检测到 Master 宕机,会自动将 Slave 切换成 Master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主句。
然而一个哨兵进程对 Redis 服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式:
假设主服务宕机,哨兵1先检测到这个结果,系统并不会马上进行 failover(故障转移) 过程,仅仅哨兵1主观的认为服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行 failover操作,切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。
二、测试
我们目前的状态是一主二从。测试启动三个哨兵
1、配置哨兵配置文件 sentinel.conf
配置一下sentinel.conf
## sentinel-5000.conf
port 5000
sentinel nonitor mymaster 127.0.0.1 6379 1
哨兵的全部配置在下面给大家列出来了。
2、启动哨兵
Redis 哨兵是通过 redis-sentinel
程序启动的
# 启动
redis-sentinel sentinel-5000.conf
启动成功看到的界面:
在从机6380和6381客户端使用 slaveof 127.0.0.1 6379
命令连接主机
并查看6379信息状态: