前言:docker和redis都是很好玩的技术,作为一个技术狂,一定会特别喜欢,那么我们可能会使用Docker来启动单个Redis用于开发,接下来将讲讲基于Sentinel的高可用Redis 3集群,代码以及放在git(git代码链接)上面了,放在项目里面的resources文件夹下面。觉得不错请给个星。不仅包含了如何启动docker集群,同时融入到java的ssm框架中,结合实例使用。使用的是Redis官方镜像3.2.1
一,介绍
Sentinel是Redis的高可用性(HA)解决方案,由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进行下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。Redis提供的sentinel(哨兵)机制,通过sentinel模式启动redis后,自动监控master/slave的运行状态,基本原理是:心跳机制+投票裁决
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
接下来先看一个sentinel.conf配置文件
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5
第一行表示Redis监控一个叫做mymaster的运行在127.0.0.1:6379的master,投票达到2则表示master以及挂掉了。
第二行表示在一段时间范围呢sentinel向master发送的心跳PING没有回复则认为master不可用了。
第三行表示主从切换时候,最多有多少个slave同时对新的master进行同步
其他详细的配置