Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。可喜的是Redis从2.8开始正式提供了Redis Sentinel (哨兵)架构来解决这个问题,本章会对Redis Sentinel进行详细分析
-
基本概念:
- 由一套或多套哨兵监控一套或多套主从结构。监控master节点,当master故障时,自动调整master所属主从结构的slave转移到一个新主上,实现数据的完整和业务的可持续性。
- 传统主从复制的问题
- 主节点的存储能力受到单机的限制
- 主节点的写能力受到单机的限制。
- 一旦主节点出现故障,需要手动将一个从节点晋升为主节点,同时需要修改应用方的主节点地址,还需要命令其他从节点去复制新的主节点,整个过程都需要人工干预。
- 高可用过程:
- 待原来的主节点恢复后,让它去复制新的主节点(就是原主节点修复后自动成为新主节点的从)
- 哨兵命令其他从节点去复制新的主节点(new-master)
- 原来的从节点(slave-1)成为新的主节点后,哨兵更新其他slave的主节点信息,重新启动其他的slave
- 如果主节点无法正常启动,需要选出一个从节点(slave-1),对其执行slaveof no one命令使其成为新的主节点。
- 主节点发生故障后,从节点连接主节点失败,两个从节点与主节点连接失败造成复制中断
-
安装和部署:
- 实验环境:
(1)一台master,两台slave组成一主多从结构
(2)在每台服务器上安装开启哨兵
2. 在软件解压目录复制sentinel.conf文件到安装目录的conf 目录下(三台哨兵相同)
(1)cp sentinel.conf /usr/local/redis/conf/