Redis Sentinel是啥?
Redis官方提供的集群管理工具,主要用来解决ha相关问题,Sentinel最早出现在Redis2.4中,Redis2.8中Sentinel更加稳定,主要功能:
- 监控master和slave节点状态,能持续监控Redis的主从实例是否正常工作,如果发现master节点挂了,会启动failover机制,从slave中选举出一个新的master,并且会把新的master信息通过api接口形式通知到客户端。
- Redis Sentinel是一个分布式系统,可以部署多个Sentinel实例来监控同一组Redis实例,它们通过Gossip协议来确定一个主实例宕机,通过Agreement协议来执行故障恢复和配置变更,一般在生产环境中部署多个实例来提高系统可用性,只要有一个Sentinel实例运行正常,就能保证被监控的Redis实例运行正常(类似Zookeeper,通过多个Zookeeper来提高系统可用性);
- 提供了事件通知api
优缺点
优点:
官方提供,相对稳定。在不分片的情况下支持良好;
缺点:
- 当进行failover的时候,无法做到客户端无感知,因为节点IP发生了变更,客户端需要同步更新failover之后的节点信息;jedis 在2.2.2版本对sentinel进行支持,应用通过redis.clients.jedis.JedisSentinelPool.getResource()取得的Jedis实例会及时更新到新的主实例地址。
- server端进行分片时,jedis无法支持(待验证,查看的资料是2015年的,其中给出了解决方案,看下面链接~~~)
copy from:
工作机制可参考:
http://blog.csdn.net/donggang1992/article/details/50981341 (漂了一眼,还没有时间细看)