Redis学习笔记——(15)哨兵:Redis Sentinel
Redis的主从复制模式下,一旦主节点发生故障,那么需要人工把从节点切换为主节点,同时还要通知服务端主节点的地址,这种操作很多人难以接受,Redis再2.8开始提供了RedisSentinel架构来解决这个问题。
1基础概念
Redis需要概念都有名词解释,首先看一下相关名词解释。
名词 | 逻辑结构 | 物理结构 |
---|---|---|
主节点master | Redis主服务/数据库 | 一个独立的Redis进程 |
从节点slave | Redis从服务/数据库 | 一个独立的Redis进程 |
Redis数据节点 | 主节点和从节点 | 主节点和从节点的进程 |
Sentinel节点 | 监控Redis数据节点 | 一个独立的Sentinel进程 |
Sentinel节点集合 | 若干抽象集合 | 若干个节点进程 |
Redis Sentinel | Redis高可用实现方案 | Sentinel节点集合和Redis数据节点进程 |
应用放 | 一个或者多个客户端 | 一个或者多个客户端或者进程 |
1.1 主从复制问题
(1)Redis的主从复制模式可以将主节点的数据改变同步给从节点,这样从节点就可以起到两个作用:
-
作为主节点的一个备份,一旦主节点出了故障不可达的情况,从节点可以作为后备“顶”上来,并且保证数据尽量不丢失(主从复制是最终一致性)。
-
从节点可以扩展主节点的读能力,一旦主节点不能支撑柱大而并发的读操作,从节点可以在一定程度上帮助主节点分担读压力。
(2)主从复制也带来了以下问题:
-
一旦主节点出现故障,需要手动将一个从节点晋升为主节点,同时需要修改应用方的主节点地址,还需要命令其他从节点去复制新的主节点,整个过程都需要人工干预。
-
主节点的写能力受到单机的限制。
-
主节点的存储能力受到单机的限制。
1.2 非高可用性
Redis主从复制模式下,一旦主节点出现了故障不可达,需要人工干预进行故障转移,无论对于Redis的应用方还是运维方都带来了很大的不便。对于应用方来说无法及时感知到主节点的变化,必然会造成一定的写数据丢失和读数据错误,甚至可能造成应用方服务不可用。对于Redis的运维方来说,整个故障转移的过程是需要人工来介入的