哨兵高可用模式
理解哨兵模式的作用与原理
掌握哨兵集群搭建
了解故障自动转移流程
核心讲解
(1)哨兵是什么
Sentinel(哨兵)是 Redis 的高可用方案,监控主从节点,主节点故障时,自动选举新的主节点,故障转移,实现高可用。
监控:持续监控主从节点健康状态
通知:故障时通知管理员
自动故障转移:主挂了,从节点选一个升为主
配置提供者:客户端从哨兵获取主从地址
(2)哨兵集群
哨兵本身也要集群,一般至少 3 个节点,奇数个,投票选举。
客观下线:多个哨兵都认为主挂了,才判定故障
领导者选举:哨兵选一个领导者,负责执行故障转移
选新主:从节点里选最优的当新主
通知所有从节点同步新主,通知客户端新地址
(3)搭建步骤
先搭好主从复制
配置哨兵节点,监控主节点
启动多个哨兵节点
测试故障转移
操作示例
# 哨兵配置文件 sentinel.conf
# 哨兵端口
port 26379
# 监控主节点,mymaster是主节点名,2表示2个哨兵认为挂了才判定故障
sentinel monitor mymaster 127.0.0.1 6379 2
# 主节点密码
sentinel auth-pass mymaster password
# 故障转移超时
sentinel down-after-milliseconds mymaster 30000
# 启动哨兵
redis-sentinel sentinel.conf
# 启动3个哨兵(不同端口)
redis-sentinel sentinel-26379.conf
redis-sentinel sentinel-26380.conf
redis-sentinel sentinel-26381.conf
# 查看哨兵状态
redis-cli -p 26379 INFO sentinel
# 查看主节点信息
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
常见误区
单个哨兵就行:单个哨兵会单点故障,必须集群,至少 3 个,奇数
哨兵不参与数据读写:哨兵只做监控和故障转移,不存数据,不处理业务请求
故障转移零中断:故障转移有秒级的中断时间,不是完全无感知
哨兵集群就够了:哨兵只负责主从高可用,读性能扩容还要靠多从节点
课后练习
搭建 3 节点哨兵集群,监控一主一从
模拟主节点宕机,观察自动故障转移
验证新主节点可以正常写入
思考:为什么哨兵节点数量要是奇数?

