Redis哨兵
高可用Sentinel
- 官方提供的高可用方案,可以用他管理多个Redis服务实列
- 编译后产生redis-sentinel程序文件
- Redis Sentinel是一个分布式系统,可以在一个架构中运行多个Sentinel进程
启动Sentinel
- 将src目录下产生redis-sentine程序文件复制到$REDIS_HOME/bin
- 启动一个运行在Sentinel模式下的Redis服务实列
- redis-sentinel
- redis-server /path/to/sentinel-conf --sentinel
- redis Sentinel是一个分布式系统,可以在一个架构中运行多个Sentinel进程
监控 Mopitoring
- Sentinel会不断检查Master和Slaves是否正常
- 每一个Sentinel可以监控任何多个Master和该Master的Slaves
Sentinel网络
- 监控同一个Master和Sentinel会自动连接,组成一个分布式Sentinel网络,互相通信并交换彼此关于监视服务器的信息
服务器下线
- 当一个Sentinel认为被监视的服务器已经下线时,它会向网络中的其他Sentinel进行确认,判断该服务器是否真的已经下线。
- 如果下线服务器为主服务器,那个Sentinel网络将对下线主服务器进行自动故障转移,通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转为复制新的主服务器,以此来让系统重新回到上线的状态。
Sentinel配置文件
- 至少包含一个监控配置选项,用于指定被监控Master的相关信息
- Sentinel monitor,列如sentinel monitor mymaster 127.0.0.1 6379 2 监视mymaster 的主服务器,服务器ip和端口,将这个主服务器半段为下线失效至少需要2个Sentinel同意,如果多数Sentinel同意才会执行故障转移
- Sentinel会根据Master的配置自动发现Master的Slaves
- Sentinel默认端口号为26379
Sentinel配置举列
- 执行以下两条命令,将创建两个监视主服务器s1的sentinel实列:
- $redis-sentinel sentinel1.conf
- $redis-sentinel sentinel2.conf
- 其中sentinel1.conf的内容为:
prot 26379
Sentinel monitro s1 127.0.01 6379 2
- sentinel2.conf内容为:
prot 26380
127.0.01 6379 2
- sentinel2.conf内容为:
prot 26380
Sentinel monitor.s1 127.0.0.1 6379 2