哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能:
集群监控:负责监控 redis master 和 slave 进程是否正常工作。
消息通知:如果某个
redis
实例有故障,那么哨兵负责发送消息作为报警通知给管理员。
故障转移:如果
master node
挂掉了,会自动转移到
slave node
上。
配置中心:如果故障转移发生了,通知
client
客户端新的
master
地址。
哨兵用于实现
redis
集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。 故障转移时,判断一个 master node
是否宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题。 即使部分哨兵节点挂掉了,哨兵集群还是能正常工作的,因为如果一个作为高可用机制重要组成部分的故障转移系统本身是单点的,那就很坑了。 哨兵的核心知识哨兵至少需要
3
个实例,来保证自己的健壮性。 哨兵 + redis
主从的部署架构,是不保证数据零丢失的,只能保证
redis
集群的高可用性。