官网:http://redisdoc.comredis
1、Sentinel介绍
当用redis做master-slave的高可用时,若是master宕机,redis自己或者客户端都没有实现主从切换的功能,而redis-sentinel是一个独立运行的进程,用于监控多个master-slave集群,它的做用:当master服务器不能正常工做时, Sentinel会开始一次自动故障迁移操做, 它会将失效master服务器的其中一个slave服务器升级为新的master服务器, 并让失效master服务器的其余从服务器改成复制新的master服务器; 当客户端试图链接失效的master服务器时, 集群也会向客户端返回新master服务器的地址, 使得集群可使用新master服务器代替失效服务器。数据库
2、配置测试
相关查看命令:服务器
# 查看redis数据库全部信息 redis-cli info # 查看redis的复制受权信息 redis-cli info replication # 查看redis的哨兵信息 redis-cli info sentinel
这里仅用一台服务器来示例。ide
约定:测试
- master为redis-6380.conf,slave分别为redis-6381.conf和redis-6382.conf
- 全部redis配置放在/etc/redis目录下


bind 127.0.0.1 port 6380 daemonize yes pidfile /var/redis/redis-6380.pid logfile /var/redis/redis-6380.log dbfilename dump-6380.rdb dir /var/redis/data


bind 127.0.0.1 port 6381 daemonize yes pidfile /var/redis/redis-6381.pid logfile /var/redis/redis-6381.log dbfilename dump-6381.rdb dir /var/redis/data slaveof 127.0.0.1 6380


bind 127.0.0.1 port 6382 daemonize yes pidfile /var/redis/redis-6382.pid logfile /var/redis/redis-6382.log dbfilename dump-6382.rdb dir /var/redis/data slaveof 127.0.0.1 6380
能够看到redis主从复制已配置好,接下来就是基于主从赋复制的redis-sentinel配置。url
运行一个 Sentinel 所需的最少配置以下所示:spa
# 当前Sentinel节点监控 127.0.0.1:6380 这个主节点 # 将这个主服务器判断为失效至少须要2个Sentinel赞成(只要赞成Sentinel的数量不达标,自动故障迁移就不会执行) # mymaster是主节点的别名 sentinel monitor mymaster 127.0.0.1 6380 2 # 每一个Sentinel节点都要按期PING命令来判断Redis数据节点和其他Sentinel节点是否可达,若是超过30000毫秒30s且没有回复,则被Sentinel标记为主观下线 sentinel down-after-milliseconds mymaster 30000 # 故障转移超时时间为180000毫秒 sentinel failover-timeout mymaster 180000 # 在执行故障转移时, 最多能够有多少个从服务器同时对新的主服务器进行同步,这个数字越小,完成故障转移所需的时间就越长 sentinel parallel-syncs mymaster 1
配置sentinel.conf,以下仅仅是sentinel运行的端口不一样而已:.net


port 26380 daemonize yes pidfile /var/redis/sentinel-26380.pid logfile /var/redis/sentinel-26380.log dir /var/redis/data sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 1800


port 26381 daemonize yes pidfile /var/redis/sentinel-26381.pid logfile /var/redis/sentinel-26381.log dir /var/redis/data sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1


port 26382 daemonize yes pidfile /var/redis/sentinel-26382.pid logfile /var/redis/sentinel-26382.log dir /var/redis/data sentinel monitor mymaster 127.0.0.1 6380 2 sentinel down-after-milliseconds mymaster 30000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1
启动sentinel并查看信息:3d
redis-sentinel sentinel-26380.conf
如今杀死master(即运行在6380端口的redis-server):code
查看6381或6382节点的身份:
能够看到本来的slave2节点变成了master。