Redis哨兵:基于Redis主从复制,主要作用便是解决主节点故障恢复的自动化问题。
一、哨兵介绍
Redis Sentinel,即Redis哨兵,Redis 2.8版本开始引入;哨兵的核心功能是主节点的自动故障转移。哨兵的四个作用:
- 监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常;
- 自动故障转移(Automatic failover):当主节点不能正常工作时,哨兵会开始自动故障转移操作,将故障主节点的一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。
- 配置提供者(Configuration provider):客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。
- 通知(Notification):哨兵可以将故障转移的结果发送给客户端。
客户端:只要通过API访问redis服务器,都会称作客户端,包括redis-cli、Java客户端Jedis等。
其中,监控和自动故障转移功能,使得哨兵可以及时发现主节点故障并完成转移;而配置提供者和通知功能,则需要在与客户端的交互中才能体现。
哨兵节点:哨兵系统由一个或多个哨兵节点组成,特殊的Redis节点,但不存储数据。
数据节点:主节点和从节点都是数据节点。
二、哨兵的部署
1、部署主从节点
哨兵系统中的主从节点,与普通的主从节点配置是一样的;部署在同一台机器上面,使用不同的端口号区分。Redis配置如下:
// 主节点配置
#redis-6379.conf
port 6379
daemonize yes
logfile "6379.log"
dbfilename "dump-6379.rdb"
// 从节点
#redis-6380.conf
port 6380
daemonize yes
logfile "6380.log"
dbfilename "dump-6380.rdb"
slaveof 192.168.92.128 6379
// 从节点
#redis-6381.conf
port 6381
daemonize yes
logfile "6381.log"
dbfilename "dump-6381.rdb"
slaveof 192.168.92.128 6379
依次启动主从节点,查看节点状态info replication
2、部署哨兵节点
哨兵节点本质上是特殊的Redis节点。哨兵节点也部署在同一机器上面,通过端口号区(26379/26380/26381)
// 哨兵节点配置
#sentinel-26379.conf
bind 192.168.92.128
port 26379
daemonize yes
logfile "26379.log"
sentinel monitor mymaster 192.168.92.128 6379 2
// 其他哨兵节点同样配置
// 哨兵启动的两种命令
redis-sentinel sentinel-26379.conf
redis-server sentinel-26379.conf --sentinel
bind IP:指定Redis只接受来自该IP的请求,如果不设置或者设置为0.0.0.0将处理所有请求。
sentinel monitor mymaster 192.168.92.128 6379 2:该哨兵节点监控192.168.92.128:6379这个主节点,