Redis的薪火相传,反客为主和哨兵模式

学习前提

redis的主从复制
注意:因为主服务器,从服务器和哨兵服务器的名字太长了,而且不好理解,容易搞混,所以下面多次出现这些词语时我会替换成master,slave和sentinel

什么是薪火相传

上一个slave(从服务器)可以是下一个slave的master(主服务器),slave同样可以接受其他的salve的连接和同步请求,那么该slave作为了链条中的下一个master,可以有效减轻master的写压力,去中心化减低风险。但是也产生了另一个风险:一旦某个slave出现意外停止运行后,以这台slave为主的其他slave都无法保存数据

在这里插入图片描述

设置

和普通的主从复制一样都是slaveof <ip> <port>,只不过master不再是只有一个

如果中间切换master

和普通的主从复制一样,都是清除之前的数据,重新建立并且拷贝最新数据

反客为主

  1. 哪怕这个slave变成了另外一个slave的master,但他的身份仍然是slave,也就是也就无法完成写操作。
  2. 如果在master没有关闭时这个slave要完成写操作,那可以执行slaveof no noe让其不再成为任何服务器的slave,从而成为其他slave的master,这也就是常说的反客为主
  3. 当一个master关闭后,后面的slave可以立刻自动升级为master,而后面的salve无需修改,这个就是我们常说的哨兵模式

哨兵模式(sentinel)

哨兵模式简单来说就是反客为主的主动版,能够后台监控master是否故障,如果发生故障则根据投票数自动将slave转换为master。
在这里插入图片描述

哨兵模式的配置

  1. 因为哨兵是基于主slave的,所以配置的服务器至少是一主二从三哨兵
  2. 自定义的/myredis目录下新建sentinel.conf文件
  3. 在这个哨兵服务器的sentinel.conf配置文件中填写内容
    sentinel monitor 给监视的服务器起个名字 主机ip 主机运行端口 多少个哨兵同意后才允许迁徙

运行哨兵模式

redus-sentinel 哨兵服务器的配置文件(例如:/myredies/sentinel.conf)

开启后会有这么几句话(如下图所示),例如第一句的意思就是6380端口的服务器是6379的slave(@符号前面的服务器是后面服务器的 slave
在这里插入图片描述

故障恢复窗口显示

如果master出现故障的话,那slave就会在哨兵服务器里面的聊天区里面发出信息,例如下图中,一台服务器说master出问题了,另一台服务器说确实出问题了
在这里插入图片描述
然后就会有一条提示说选择了一个新的服务器,例如下图就是说选择了本地的6380端口的redis为主服务器
在这里插入图片描述

恢复步骤

  1. 某台服务器挂掉后,会从其下线的所有从服务器里面挑选一个,将其转换为主服务器
    选择的条件依次为:
    1.选择靠前的:在redis.conf配置文件中会有一个salve-priority 数字(默认100),这个数字就是优先级大小,值越小的越优先考虑。
    2.优先偏移量打的:会的原主服务器最多数据的。
    3.选择runid最小的:每个redis实例启动后都会随机生成一个runid。
  2. 挑选出新的主服务器后,sentinel向原来的master的从服务器发送slaveof,让其都成为新master的从服务器
  3. 原本的主服务器恢复正常重启后,会变成新master的从服务器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值