聊聊Redis中的哨兵模式(Sentine)
本篇文章带大家了解一下Redis中的哨兵模式(Sentine),介绍一下Sentinel工作机制、Sentinel模式怎么搭建,希望对大家有所帮助!
Redis Sentinel哨兵模式 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。【相关推荐:Redis视频教程】
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 系统执行以下三个任务:
- 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
- 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
Sentinel工作机制
每个sentinel以每秒钟一次的频率向它所知的master,slave以及其他sentinel实例发送一个 PING 命令
如果一个实例距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被sentinel标记为主观下线。
如果一个master被标记为主观下线,则正在监视这个master的所有sentinel要以每秒一次的频率确认master的确进入了主观下线状态
当有足够数量的sentinel(大于等于配置文件指定的值)在指定的时间范围内确认master的确进入了主观下线状态, 则master会被标记为客观下线
在一般情况下, 每个sentinel会以每 10 秒一次的频率向它已知的所有master,slave发送 INFO 命令
当master被sentinel标记为客观下线时,sentinel向下线的master的所有slave发送 INFO 命令的频率会从 10 秒一次改为 1 秒一次
若没有足够数量的sentinel同意master已经下线,master的客观下线状态就会被移除; 若master重新向sentinel的 PING 命令返回有效回复,master的主观下线状态就会被移除
Sentinel模式搭建
环境
master:127.0.0.1:6379 【初始化master】 slave:127.0.0.1:6380 127.0.0.1:6381 sentinel:127.0.0.1:26379 127.0.0.1:26380 127.0.0.1:26381
- 修改配置:
这里省略安装了redis,直接修改sentinel配置文件。对应文件夹Redis6379-Redis6381
# 监控节点,且超过2个sentinel 任务故障,方可执行故障转移 sentinel monitor mymaster 127.0.0.1 6379 2 # 如果节点在 30000毫秒内未回应,就认为故障 sentinel down-after-milliseconds mymaster 30000 # 如果故障转移后,同时进行主从复制数为 1 sentinel parallel-syncs mymaster 1 # 故障转移的超时时间 sentinel failover-timeout mymaster 180000 sentinel deny-scripts-reconfig yes
启动命令
./src/redis-sentinel ./config/redis-sentinel-6379.conf(同样启动6380 6381)
更多编程相关知识,请访问:编程入门!!
以上就是聊聊Redis中的哨兵模式(Sentine)的详细内容,更多请关注其它相关文章!