Redis哨兵模式
哨兵的介绍
哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 master并将所有slave连接到新的master。 ,主要有以下功能:
• 集群监控:负责监控 redis master 和 slave 进程是否正常工作。
• 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。(保持联通)
• 故障转移:如果 master node 挂掉了,会自动转移到 slave node 上。
哨兵主要的工作模型
配置哨兵:
配置一拖二的主从结构
配置三个哨兵(配置相同,端口不同)
参看sentinel.conf 启动哨兵
redis-sentinel sentinel端口号 .conf
工作原理:
阶段一:监控阶段:
每一个Sentinel向master,slave和其他的sentinel要状态,sentinel之间会组建一个频道相互:发布,订阅,接收和同步信息。
阶段二:通知阶段:
用于同步各个节点的状态信息
获取各个sentinel的状态(是否在线)
获取master的状态
master属性
runid
role:master 各个slave的详细信息 获取所有slave的状态(根据master中的slave信息)
slave属性
runid
role:slave
master_host、master_port
offset
阶段三:故障转移阶段
当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作。
判断一个 master 是否宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题如下:
选择新master的原则:
详细部署请参考:Redis 哨兵模式详解
学习参考黑马程序员redis学习视频:http://yun.itheima.com/course/611.html?bili