往期回顾
redis之数据结构与对象篇(一)
redis之数据结构与对象篇(二)
redis之数据结构与对象篇(三)
redis之数据结构与对象篇(终章)
redis之单机数据库杂谈
redis持久化的秘密
redis的复制实现
redis之发布与订阅
目录
Sentinel(哨兵)是Redis的高可用性解决方案:由一个或者多个Sentinel实例组成Sentinel系统可以见识多个主服务器,以及这些主服务器属下的所有从服务器,并在被见识的主服务器进入下线状态时,自动将主服务器属下的从服务器升级为主服务器,然后由新的主从服务器代替已经下线的主服务器继续处理命令请求
下图展示了一个Sentinel系统监视服务器的例子
- 双环图案表示的是当前的主服务器server1
- 单环图表示的是主服务器的三个从服务器server2,server3,server4
- 三个从服务器正在复制主服务器server1,而Sentinel系统正在监视四个服务器
假设这时,从服务器server1进入下线状态,那么从服务器server2,server3,server4对主服务器的复制操作将被终止,并且Sentinel系统会察觉到server1已经下线
当server1的下线时长超过用户设定的下线时长上线时,Sentinel系统就会对server1执行故障转移操作:
- 首先,Sentinel系统会挑选server1属下的其中一个从服务器,将这个被选中的从服务器升级为新的主服务器
- 之后,Sentinel系统会向server1属下的所有从服务器发送新的复制指令,让他们成为新的主服务器的从服务器,当所有从服务器都开始复制新的主服务器时,故障转移操作完成
- Sentinel系统会继续监视已经下线的server1,在server1重新上线时,将它设置为新的主服务器的从服务器
启动并初始化Sentinel
启动一个Sentinel可以使用命令:
$ redis-sentinel /path/you/sentinel.conf
当一个Sentinel启动时,它需要执行以下步骤:
- 初始化服务器
- 将普通的Redis服务器代码替换为Sentinel专有代码
- 初始化Sentinel状态
- 根据给定的配置文件,初始化Sentinel的监视服务器列表
- 创建连向主服务器的网络连接
初始化服务器
Sentinel本质上是一个运行在特殊模式下的Redis服务器,所以启动的第一步就是初始化一个Redis服务器。Sentinel的作用和普通的Redis服务器不同,所以初始化过程也不相同
例如,普通服务器在初始化时会载入RDB文件或者AOF文件来还原数据库状态,但是Sentinel并不使用数据库,所以初始化Sentinel时就不会载入RDB文件或者AOF文件
Sentinel模式下,服务器的主要功能使用情况。
功能 |
---|