redis哨兵
在主从复制模式下, 一旦主节点宕机, 需要人工干预进行故障转移, 给应用方和运维带来了使用的不便。 引入哨兵, 主节点故障后,重新选举新的主节点, 实现了风险转移。
9.1 基本概念
redis数据节点: 主节点和从节点
sentinel节点: 用来监控redis数据节点
sentinel节点集合:若干 sentinel 节点组成的抽象组合
1 sentinel的架构
sentinel架构和主从复制的区别是, sentinel是在主从复制的基础上引入了sentinel节点集合,对主从节点进行监控,当发现主节点宕机后, 会重新从子节点中选举一个新主节点, 其余从节点都转连接新的主节点。具体步骤如下:
1) sentinel节点集合对主从节点进行监控;
2) 当所有sentinel节点都监控到master节点宕机了,或者失去联系了, 会内部选举一个sentinel领导者,
由这个sentinel领导者去进行自动故障转移;
3)自动故障转移的步骤为, 先断掉所有从节点和master节点的连接, 重新选举一个从节点作为新的主节点,其余从节点都转连新主节点。
2 sentinel的功能
1)监控
sentinel节点集合会监控主从节点和其余sentinel节点
2)故障转移
sentinel识别到主节点不可用后,会重新选举新的主节点
3)通知
sentinel会把故障转移的情况通知给应用方
4)配置提供者
客户端连接的是redis sentinel节点集合,这样的好处有2点,如下:
a 通过sentinel节点结合来获取主节点,防止误判;
b sentinel有多个节点,防止某个节点出现故障, 保证其余sentinel节点仍然可用。
9.2 部署
1 部署结构:一主两从三哨兵模式
2 sentinel常用配置
1)sentinel monitor {myMasterName} {ip}{port} {quorom} 监控主节点
{myMasterName} 表示主节点的别名;
{ip}{port} 表示主节点的ip和端口号;
{quorom} 表示至少几个sentinel节点同意主节点不可用则认为主节点故障;
2)sentinel down-after-milliseconds {myMasterName}{senconds} 监控任意节点超时的时间设置,单位毫秒
{myMasterName} 表示主节点的别名, 也可以是其他从节点或者sentinel节点;
sentinel节点会定期的发送ping命令去监控主从节点或者sentinel节点是否可用,如果时间超过了down-after-milliseconds配置,则认为节点不可用;
3)sentinel parallel-syncs 选举新节点后,同一时间从节点复制的个数
4)sentinel failover-timeout {myMasterName} {senconds} 故障转移超时时间
故障转移的四个阶段:
a 所有从节点断掉与主节点的联系;
b 新选举出的从节点设置为主节点;
c 其余从节点从主节点进行数据同步;
d 旧的主节点重启后与新主节点建立复制关系,进行数据同步
sentinel对一个主节点故障转移失败, 那么下次在对这个主节点进行故障转移的起始时间为failover-timeout的2倍