手把手教你搭哨兵——哨兵的概念搭建原理解析

Redis哨兵机制实现原理

1.Redis主从机制

1.1主从复制的概念

我们在实际应用中不可能只有一台redis服务器,因为如果这一台redis服务器宕机了,那么就可能导致redis不可用,同时还有可能发生数据丢失。所以这时候我们必须要有从redis做备份。

在这里插入图片描述

Redis主机既能读又能写,而Redis的从机只能读不能写,当向Redis主机写入数据时必须将数据同步到Redis从服务器上,从而保证数据的一致性。这里要注意一下,保证数据一致性一定是弱一致性,不是强一致性。强一致性要求我向主机写入数据之后数据必须实时的同步到Redis从服务器上。弱一致性强调的是最终一致性,在数据同步的过程中肯定会受到网络等方面的影响,所以几乎不可能实现强一致性。

主从复制帮助我们实现了:Redis集群,数据的备份,读写分离。

1.2主从复制的过程

1.需要在从redis服务器配置在slaveof执行主redis服务的IP地址和端口号。

2.从Redis服务器和主Redis服务器建立Socket长连接,因为需要经常同步数据所以需要长连接

3.采用全量和增量形式将数据同步给从Redis服务器。

全量: 从Redis首次启动的时候(通过二进制执行dump文件) rdb

增量:主Redis每次有新的set请求的时候 aof日志文件

1.3主从复制存在的问题

如果是一主多从的话那么在开启的时候主机可能会对所有的从机作全量同步这样做及其低效。为了解决这个问题我们可以这样做。
在这里插入图片描述

变成如右图所示的树状结构那么主机一开始增量同步的时候只同步到底下的两个从机,然后依次类推这样就大大地提高了效率。

1.4在Redis中配置一主多从

首先我们准备三台主机分别作为主机和从机如图所示

在这里插入图片描述

这里面.3作为主机剩下两个.7.9作为从机。我们要实现的效果是

在这里插入图片描述

我们让主机对.7这台从机做数据同步,.7对.9做数据同步。主机不用做任何配置,我们只需要让从机指向主机即可,所以我们要更改redis的配置文件。

在这里插入图片描述

主服务器和从服务器之间要发送连接所以一定要关闭他们的防火墙systemctl stop firewalld然后我们启动3和7这对主从通过info replication查看一下他们的状态。

在这里插入图片描述

这是主机role表明了他是master,然后slaves数量为1。

在这里插入图片描述

role说明了他是slave,然后下面两行说了他的主节点的IP地址和端口号。然后我们再将9这台机器配置为7这台机器的从(和上述步骤一样不演示了),然后我们试一下从节点能不能做写的操作。

在这里插入图片描述

如图所示从节点无法做写的操作会提示权限不足。

但是我们在主服务器可以写,同时我们在从服务器也可以读这就完成了读写分离。

在这里插入图片描述
在这里插入图片描述

1.4主从复制存在的缺陷

如果主节点宕机可能会导致整个redis服务不能实现写的操作,需要人为设置一个主。这就引出了哨兵机制,哨兵机制可以帮助我们从剩余的从节点中选举出一个主节点。

2.哨兵集群的架构设计原理

之前的主从复制,一旦主节点挂了,那么整个集群就只能读不能写, 所以我们需要主节点出事之后马上从剩下的从节点当中选举一个主节点。完成这个选举功能的就是哨兵。哨兵机制如图所示

在这里插入图片描述

首先一点就是我们的哨兵也必须是一个集群不能说我就放一个哨兵然后这个哨兵挂了,然后就全完了。

我们的哨兵每隔10s就会监听我们的masterRedis服务器,就可以用递归的形式获取到整个Redis服务列表,因为我只要获得了主Redis服务器就能通过info replication的方式拿到全部从节点。

哨兵们通过订阅相同的主题来实现一个集群,多个哨兵都会同时监听到同一个master节点,订阅相同的主题,有新的哨兵加入就会将自己的服务器发送到主题中,随后相互建立长连接。如图所示

在这里插入图片描述

首先哨兵1先订阅到了这个主题然后向这个主题里面发布自己的服务器信息,然后哨兵2进来由于他们监听的是同一个master节点,所以他们会订阅相同的主题所以也会向同一个主题下面发布自己的服务器信息,同时也会订阅到哨兵1的服务器信息,于是他们就会建立一个长连接。哨兵3也一样。所以最终哨兵会相互注册然后形成一个集群。

3.master宕机之后如何选举

单个哨兵会向master节点发送ping命令如果这个时候master节点没有及时的响应的话,这时候单个哨兵会认为该master主观不可用状态;这个时候单个哨兵会通知其他的哨兵去确认该master节点是否会宕机如果有超过>=配置文件中配置的数量,那么就会认为这个master节点已经宕机需要重新选举。

4.配置哨兵集群

首先我们要将我们解压出来的redis目录里面将sentinel.conf复制到redis的bin目录下。

在这里插入图片描述

然后我们要对哨兵集群进行配置让他们都监听同一个master。如下图所示每一个都要做这样的配置。

在这里插入图片描述

配置成功之后我们先启动redis服务器,然后再执行这个命令开启哨兵。./redis-sentinel ./sentinel.conf。然后分别看一下主机和从机的info。

在这里插入图片描述

我们能看到info里面它有一个slave。

在这里插入图片描述

然后看看这个从机他是slave,然后也有主机的信息,然后他底下还有一个从机。

在这里插入图片描述

最后这个9主机是7底下没有从机了。

然后我们把主机宕掉看看选举的结果。看看这个哨兵机制有没有生效。

在这里插入图片描述

我们可以惊奇的发现之前7这个小伙儿已经翻身农奴把歌唱了。一下当家做主了。这就是哨兵机制的作用在原来的主节点宕机之后在剩下的从节点随机选一个作为主节点。

然后我们再重新启动原来的主节点看看之后他会是什么什么角色

在这里插入图片描述

原来的主人变成了slave了。因为这个时候这个7已经上位成功了,3再想上去把7踢下去不是那么容易。选举的过程中sentinel.conf的文件会被修改sentinel monitor myamaster 会被改成192.168.247.7然后9这台机器就知道了master是7,7最终成了master,9最终成了slave。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温JZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值