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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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
相关文章
|
2月前
|
NoSQL Redis
Redis 执行 Lua保证原子性原理
Redis 执行 Lua 保证原子性原理
129 1
|
9天前
|
缓存 NoSQL Linux
redis的原理(三)
redis的原理(三)
redis的原理(三)
|
20天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
9天前
|
存储 缓存 NoSQL
redis的原理(四)
redis的原理(四)
|
9天前
|
存储 缓存 NoSQL
redis的原理(二)
redis的原理(二)
|
9天前
|
缓存 NoSQL 安全
Redis的原理(一)
Redis的原理(一)
|
2月前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
19天前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
2月前
|
缓存 NoSQL Java
Redis深度解析:解锁高性能缓存的终极武器,让你的应用飞起来
【8月更文挑战第29天】本文从基本概念入手,通过实战示例、原理解析和高级使用技巧,全面讲解Redis这一高性能键值对数据库。Redis基于内存存储,支持多种数据结构,如字符串、列表和哈希表等,常用于数据库、缓存及消息队列。文中详细介绍了如何在Spring Boot项目中集成Redis,并展示了其工作原理、缓存实现方法及高级特性,如事务、发布/订阅、Lua脚本和集群等,帮助读者从入门到精通Redis,大幅提升应用性能与可扩展性。
60 0
下一篇
无影云桌面