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



相关文章
|
存储 缓存 NoSQL
Redis 服务器全方位介绍:从入门到核心原理
Redis是一款高性能内存键值数据库,支持字符串、哈希、列表等多种数据结构,广泛用于缓存、会话存储、排行榜及消息队列。其单线程事件循环架构保障高并发与低延迟,结合RDB和AOF持久化机制兼顾性能与数据安全。通过主从复制、哨兵及集群模式实现高可用与横向扩展,适用于现代应用的多样化场景。合理配置与优化可显著提升系统性能与稳定性。
360 0
|
3月前
|
存储 缓存 监控
Redis分区的核心原理与应用实践
Redis分区通过将数据分散存储于多个节点,提升系统处理高并发与大规模数据的能力。本文详解分区原理、策略及应用实践,涵盖哈希、范围、一致性哈希等分片方式,分析其适用场景与性能优势,并探讨电商秒杀、物联网等典型用例,为构建高性能、可扩展的Redis集群提供参考。
190 0
|
10月前
|
消息中间件 缓存 NoSQL
Redis原理—5.性能和使用总结
本文详细探讨了Redis的阻塞原因、性能优化、缓存相关问题及数据库与缓存的一致性问题。同时还列举了不同缓存操作方案下的并发情况,帮助读者理解并选择合适的缓存管理策略。最终得出结论,在实际应用中应尽量采用“先更新数据库再删除缓存”的方案,并结合异步重试机制来保证数据的一致性和系统的高性能。
Redis原理—5.性能和使用总结
|
10月前
|
缓存 NoSQL Redis
Redis原理—2.单机数据库的实现
本文概述了Redis数据库的核心结构和操作机制。
Redis原理—2.单机数据库的实现
|
10月前
|
存储 缓存 NoSQL
Redis原理—4.核心原理摘要
Redis 是一个基于内存的高性能NoSQL数据库,支持分布式集群和持久化。其网络通信模型采用多路复用监听与文件事件机制,通过单线程串行化处理大量并发请求,确保高效运行。本文主要简单介绍了 Redis 的核心特性。
|
10月前
|
缓存 NoSQL Redis
Redis原理—3.复制、哨兵和集群
详细介绍了Redis的复制原理、哨兵原理和集群原理。
|
10月前
|
运维 NoSQL 算法
【📕分布式锁通关指南 04】redis分布式锁的细节问题以及RedLock算法原理
本文深入探讨了基于Redis实现分布式锁时遇到的细节问题及解决方案。首先,针对锁续期问题,提出了通过独立服务、获取锁进程自己续期和异步线程三种方式,并详细介绍了如何利用Lua脚本和守护线程实现自动续期。接着,解决了锁阻塞问题,引入了带超时时间的`tryLock`机制,确保在高并发场景下不会无限等待锁。最后,作为知识扩展,讲解了RedLock算法原理及其在实际业务中的局限性。文章强调,在并发量不高的场景中手写分布式锁可行,但推荐使用更成熟的Redisson框架来实现分布式锁,以保证系统的稳定性和可靠性。
585 0
【📕分布式锁通关指南 04】redis分布式锁的细节问题以及RedLock算法原理
|
存储 NoSQL 网络安全
Redis安装(单机、主从、哨兵、集群)
Redis安装(单机、主从、哨兵、集群)
333 1
|
缓存 NoSQL 应用服务中间件
分布式缓存之Redis(持久化、主从、哨兵、分片集群)
分布式缓存之Redis(持久化、主从、哨兵、分片集群)
|
NoSQL 编译器 Redis
轻松掌握组件启动之Redis单机、主从、哨兵、集群配置
这篇文章介绍了Redis的单机配置启动和主从架构、哨兵、集群搭建方法。无论你是初学者还是有一定经验的开发者,这篇文章都能为你提供实用的指导,让你轻松掌握Redis的配置和架构搭建。
365 0