本篇文章带大家了解一下Redis中的哨兵模式(Sentine),介绍一下Sentinel工作机制、Sentinel模式怎么搭建,希望对大家有所帮助!
Redis Sentinel哨兵模式 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。【相关推荐:Redis视频教程】
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 系统执行以下三个任务:
每个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的主观下线状态就会被移除
环境
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)的详细内容。更多信息请关注PHP中文网其他相关文章!