0
点赞
收藏
分享

微信扫一扫

Redis Sentinel 哨兵

禾木瞎写 2022-03-11 阅读 166

Redis Sentinel 哨兵

一. 基本架构及故障转移流程

  1. 基础架构

在这里插入图片描述
2. 故障转移自动恢复的流程

  • 1、多个sentinel发现并确认master出现故障
  • 2、选举出其中一个 sentinel 作为领导 leader
  • 3、选出其中一个 slave 成为新的 master,选取规则跟 slave-priority 有关,当优先级相同时,会选择偏移量最大(数据最完整)、runId最小的节点(启动时间最早)
  • 4、通知其余的 slave,成为新的 master 的 slave,复制规则和 parallel-syncs 参数有关
  • 5、通知客户端新的主从变化
  • 6、将原来的 master 配置为 slave,并对其保持关注,当其复活后,成为新的 slave

二、安装与配置

1. 配置开启主从

  • 主节点配置如下
port 7000
daemonize yes
pidfile /var/run/redis-7000.pid
logfile "7000.log"
dir "/opt/soft/test/redis/data"
  • 两个从节点,端口分别为 7001,7002 配置如下
port ${port}
daemonize yes
pidfile /var/run/redis-${port}.pid
logfile "${port}.log"
dir "/opt/soft/test/redis/data"
slaveof 127.0.0.1 7000    
  • 三个 sentinel ,端口分别为 26379,26380,26381, 配置如下
    配置前可通过如下命令查看 sentinel 的默认配置
port ${port}
daemonize yes
dir /opt/soft/test/redis/data/
logfile "${port}.log"

# 监听本机7000端口,超过2个sentinel都认为故障时即切换 master
sentinel monitor mymaster 127.0.0.1 7000 2 

# 超过30秒即认为发生故障
sentinel down-after-milliseconds mymaster 30000

sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
  • 此时对于三个 sentinel 分别执行启动并查看 redis 主从 及 sentinel 的状态

三、运行机制

1. 三个定时任务

  1. 每10秒每个 sentinel 对每个 master 和 slave 执行 info
  1. 每2秒,每个 sentinel 通过 master 节点的 channel 交换信息(pub/sub)
  1. 每1秒每个 sentinel 对其他的 sentinel 和 redis 执行 ping

2. 领导者选举

四、手动进行节点运维

1. 可在线切换master到指定的实例上

举报

相关推荐

0 条评论