redis高可用-sentinel

  • Redis主从复制可将主节点数据同步给从节点,从节点此时有两个作用:

    • 一旦主节点宕机,从节点作为主节点的备份可以随时顶上来。

    • 扩展主节点的读能力,分担主节点读压力。

    但是问题来了:

    • 一旦主节点宕机,从节点晋升成主节点,同时需要修改应用方的主节点地址,还需要命令所有从节点去复制新的主节点,整个过程需要人工干预。

  • redis主节点挂掉之后应该怎么操作?命令模拟

     slaveof no one       # 取消主备,变更为主节点
    ​
     slaveof 新host  新节点  # 将其他节点设置为新主节点的备份节点
  • Sentinel正是实现了这个功能

这里我们使用Sentinel自动去管理节点,先启动一主两从节点,6379为master,6380和6381为slave

然后拷贝sentinel.conf 到文件下,修改以下配置

sentinel monitor mymaster 127.0.0.1 6379 1   
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

然后启动哨兵

可以看到sentinel已经启动,并且监控了6379为主,6380和6381为从

然后的操作想必大家都知道了 ,我们手动把6379 shutdown,看看哨兵会做什么操作

然后我们看哨兵控制台的消息,可以看到大概意思就是监控到6379挂掉了,试图去连接6379,需要重新选举,貌似是要选举6381为主节点,我们去验证下

然后这时哨兵应该已经做出了结果,我们连接到6380,看看他干了什么

这里可以看到6380已经变为了6381的从节点。

这里介绍一下本节几个命令的意思

sentinel monitor mymaster 127.0.0.1 6379 1   
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

  • 命令讲解

    • sentinel monitor mymaster 127.0.0.1 6379 1 名称为mymaster的主节点名,1表示将这个主服务器判断为失效至少需要 1个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)

    • down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数

    • failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel 将会认为此次failoer失败

    • parallel-syncs 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。

    • 如果从服务器被设置为允许使用过期数据集, 那么你可能不希望所有从服务器都在同一时间向新的主服务器发送同步请求, 因为尽管复制过程的绝大部分步骤都不会阻塞从服务器, 但从服务器在载入主服务器发来的 RDB 文件时, 仍然会造成从服务器在一段时间内不能处理命令请求: 如果全部从服务器一起对新的主服务器进行同步, 那么就可能会造成所有从服务器在短时间内全部不可用的情况出现。

  • 启动所有主从上的sentinel

    • 前提是它们各自的server已成功启动 cd /usr/local/redis/src/redis-sentinel /etc/redis/sentinel.conf

  • info Replication 查看节点信息

  • shutdown主节点看服务是否正常

其实哨兵能干的事很多 ,这里我们只是让大家明白思想。下篇文章见!

猜你喜欢

转载自blog.csdn.net/qq_41023026/article/details/89684079