Redis哨兵原理,我忍你很久了!(1)

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis哨兵原理,我忍你很久了!

本文主要围绕如下几个方面介绍哨兵

  • 哨兵介绍
  • 哨兵配置
  • 哨兵工作原理

本文实现环境

  • centos7.3 redis4.0
  • redis工作目录 /usr/local/redis
  • 在虚拟机进行模拟操作

Redis哨兵搭建以及工作流程

本文主要围绕如下几个方面介绍哨兵

本文实现环境

一、什么是哨兵

二、哨兵的作用

二、如何配置哨兵

1. 准备工作

2. sentinel.conf配置解读

3. 开始配置

三、哨兵工作原理

1. 监控工作流程

2. 通知工作流程

3. 故障转移原理(本文重点)

四、总结




一、什么是哨兵

先简单说几句我们在配置主从复制时有一种情况就是主节点宕机了,谁来提供服务呢!


当主节点宕机后主从复制就没有存在的意义了,数据为王的时代没有了数据何谈什么高可用。


image.png


这个时候就横空出世了一位老大哥名叫哨兵,老大哥说这个问题我来帮你们处理。


既然主节点master作为老大不领你们玩了。我就从你们四个中间再挑选出来一位老大,然后你们跟着他玩。


等不带你们玩的那个老大回来后他的身份就失效了,就不在是你们的老大了。他只能跟着我挑选出来的老大玩。


上边这段对话过程就是我们配置哨兵的意义到底在哪,跟谁玩就是谁给谁数据,知道了哨兵的作用我们就在继续。


最后我们用专业术语来解释一下什么是哨兵。


哨兵,英文名sentinel,是一个分布式系统,用于对主从结构中的每一台服务器进行监控,当主节点出现故障后通过投票机制来挑选新的主节点,并且将所有的从节点连接到新的主节点上。


二、哨兵的作用

上文中我们谈到的对话过程就是哨兵的作用之一自动故障转移。


谈到作用肯定就是这个哨兵到底在工作中到底干了什么事情。我们先用比较干巴的概念描述一下,然后在下文的工作原理会一一谈到。


哨兵的三个作用监控、通知、自动转移故障


  • 监控
  • 监控谁?支持主从结构的工作一个是主节点一个是从节点,那肯定就是监控这俩个了。
  • 监控主节点和从节点是否正常运行
  • 检测主节点是否存活,主节点和从节点运行情况
  • 通知

哨兵检测的服务器出现问题时,会向其他的哨兵发送通知,哨兵之间就相当于一个微信群,每个哨兵发现的问题都会发在这个群里。

  • 自动故障转移

当检测到主节点宕机后,断开与宕机主节点连接的所有从节点,在从节点中选取一个作为主节点,然后将其他的从节点连接到这个最新主节点的上。并且告知客户端最新的服务器地址。

这里有一个注意点,哨兵也是一台redis服务器,只是不对外提供任何服务。


配置哨兵时配置为单数。那么为什么配置哨兵服务器的数量为单数呢?带着这个疑问你会在下文看到你想要的答案。


二、如何配置哨兵

1. 准备工作

这一章我们就开始配置哨兵,前期工作准备。下图就是咔咔的准备工作。开启8个客户端,三个哨兵、一个主节点、俩个从节点、一个主节点客户端、一个从节点客户端。


image.png


2. sentinel.conf配置解读

哨兵使用的配置文件是sentinel.conf


image.png


我们来对sentinel.conf配置信息进行解读


image.png


但是大多数都是注释,这里咔咔给大家提供一个命令来过滤这些无用信息 cat sentinel.conf | grep -v '#' | grep -v '^$'


image.png

  • port 26379 :对外服务端口号
  • dir /tmp:存储哨兵的工作信息
  • sentinel monitor mymaster 127.0.0.1 6379 2:监控的是谁,名字可以自定义,后边的2代表的是,如果有俩个哨兵判断这个主节点挂了那这个主节点就挂了,通常设置为哨兵个数一半加一。
  • sentinel down-after-milliseconds mymaster 30000:哨兵连接主节点多长时间没有响应就代表挂了。后边30000是毫秒,也就是30秒。
  • sentinel parallel-syncs mymaster 1:这个配置项是指在故障转移时,最多有多少个从节点对新的主节点进行同步。这个值越小完成故障转移的时间就越长,这个值越大就意味着越 多的从节点因为同步数据而不可用。
  • sentinel failover-timeout mymaster 180000:在进行同步的过程中,多长时间完成算有效,系统默认值是3分钟。

3. 开始配置

使用命令cat sentinel.conf | grep -v '#' | grep -v '^$' > ./data/sentinel-26379.conf把sentinel.conf过滤后的信息移到/usr/local/redis/conf下


image.png


然后打开sentinel-26379.conf修改信息存放目录


image.png


然后快速的复制俩个哨兵配置文件,端口为26380和26381。sed 's/26379/26381/g' sentinel-26379.conf > sentinel-26381.conf


image.png



测试主从复制处于正常工作状态,启动三台redis服务器,端口分别为6379、6380、6381


image.png


查看主节点信息,是有俩台从节点在连接着,端口分别为6380、6381。


这里有一个小小的点就是lag怎么一个是1一个是0呢!lag是延迟时间,我这里是本地测试所以会出现0的情况,使用云服务器是很少出现的。lag的值为0和1都属于正常。


image.png


测试主节点添加一个hash值,hset kaka name kaka


image.png


分别从slave1和slave2获取kaka的值,检测主从复制是否正常运行。


经过测试我们的主从结构是正常运行的。

image.png


image.png



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
NoSQL Redis Sentinel
【怒怼大厂面试官】听说你精通Redis?说说Redis哨兵
面试官:Redis哨兵知道吧?知道的,Sentinel哨兵本质是一个运行在特殊模式下的Redis服务器。面试官:嗯然后呢?它的主要作用是通过检测Redis主从服务器的下线状态,选举出新Redis主服务器,也就是故障转移,来保证Redis的高可用性。
77 4
【怒怼大厂面试官】听说你精通Redis?说说Redis哨兵
|
1月前
|
存储 缓存 Java
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
【Spring原理高级进阶】有Redis为啥不用?深入剖析 Spring Cache:缓存的工作原理、缓存注解的使用方法与最佳实践
|
12天前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
16 0
|
25天前
|
存储 NoSQL Redis
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)(三)
作者推荐 |【Redis技术进阶之路】「原理系列开篇」揭秘高效存储模型与数据结构底层实现(SDS)
21 0
|
27天前
|
NoSQL 关系型数据库 MySQL
LAMP+Redis详解(一)——基本原理
LAMP+Redis详解(一)——基本原理
13 1
|
1月前
|
NoSQL Redis
[Redis]——主从同步原理(全量同步、增量同步)
[Redis]——主从同步原理(全量同步、增量同步)
|
1月前
|
存储 监控 NoSQL
Redis 架构深入:主从复制、哨兵到集群
大家好,我是小康,今天我们来聊下 Redis 的几种架构模式,包括主从复制、哨兵和集群模式。
Redis 架构深入:主从复制、哨兵到集群
|
1月前
|
消息中间件 存储 缓存
【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶
【Redis实战】有MQ为啥不用?用Redis作消息队列!?Redis作消息队列使用方法及底层原理高级进阶
|
13天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
28 0

热门文章

最新文章