redis 哨兵集群搭建的实现

 更新时间:2022年08月10日 11:25:46   作者:逆风飞翔的小叔  
本文主要介绍了redis 哨兵集群搭建的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

上一篇,我们了解了redis 复制集群的完整的搭建流程,本篇来分享一下如何搭建 redis 哨兵集群。

为什么需要哨兵集群

redis哨兵集群要解决的问题是什么呢?搞清楚这个问题之后,就知道为什么需要哨兵集群了。我们知道,redis复制集群解决的是,高并发情况下,单节点的读性能瓶颈以及单节点问题;

但是复制集群的很明显的问题就是,当主节点挂掉后,集群将无法提供写业务,如果要恢复集群,则需要人工介入,这个必定会丢失数据不说,而且需要一定的时间;

而在哨兵模式下,集群的状态通过哨兵可以得到实时监控,一旦主节点宕机,哨兵会立即感知,然后选举出新的主节点,继续对外提供服务;

搭建前准备

1、基于centos7 的虚拟机(或云服务器);

2、redis 安装包(本篇基于6.X版本);

搭建步骤

本篇的集群将在同一台机器上搭建演示,通过不同的端口进行区分

1、准备(规划)三个sentinel实例

节点IPPORT
s110.34.33.8027001
s210.34.33.8027002
s310.34.33.8027003

2、创建3个文件目录

要在同一台虚拟机开启3个实例,必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录。我们创建三个文件夹,名字分别叫s1、s2、s3;

mkdir s1 s2 s3

3、在s1目录下创建一个sentinel.conf文件

添加下面的内容:

port 27001
sentinel announce-ip IP
sentinel monitor mymaster IP 7001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
dir "/tmp/s1"

配置文件解读:

  • port 27001:是当前sentinel实例的端口;
  • sentinel monitor mymaster 192.168.150.101 7001 2:指定主节点信息

mymaster:主节点名称,自定义,任意写;

IP 7001:主节点的ip和端口;

2:选举master时的quorum值

4、将s1/sentinel.conf文件拷贝到s2、s3两个目录中

在/tmp目录执行下列命令

cp s1/sentinel.conf s2
cp s1/sentinel.conf s3

5、修改s2,s3目录下的配置文件端口分别为27002、27003

在tmp目录下执行下面的命令

sed -i -e 's/27001/27002/g' -e 's/s1/s2/g' s2/sentinel.conf
sed -i -e 's/27001/27003/g' -e 's/s1/s3/g' s3/sentinel.conf

随机打开一个s2或s3目录下的文件,可以发现,配置文件已调整;

6、启动3个sentinel实例

在启动sentinel集群之前,先把上一篇的redis集群启动起来

进入到tmp目录,分别执行下面的命令进行启动

# 第1个
redis-sentinel s1/sentinel.conf
# 第2个
redis-sentinel s2/sentinel.conf
# 第3个
redis-sentinel s3/sentinel.conf

启动过程

通过输出日志,也可以看到,三个sentinel实例已经正常启动,并探测到 7001,7002,7003这三个redis实例,以及这三个redis实例的主从关系,即redis集群已经成功被sentinel集群监控起来;

到这里为止,整改哨兵集群大搭建过程就完成了,接下来,做一下集群的异常测试

集群测试

将redis 7001这个服务实例强制下线

在下线的时候,注意分别观察sentinel的3个实例控制台的输出日志变化

 从sentinel实例控制台的输出日志来看,主要经历了3个阶段:

  • 认为7001这个redis实例主观下线;
  • 当sentinel集群超过半数以上的实例认为7001这个节点下线时,变成客观下线;
  • 发起投票,在剩下的2个redis实例中进行新的redis master的选举;

再次启动7001这个实例

通过sentinel控制台输出日志,可以看到,7001服务实例信息再次被sentinel集群探测到,即监控起来

需要注意的是,再次启动7001服务之后,7001这个redis实例不一定会再次成为master

 到此这篇关于redis 哨兵集群搭建的实现的文章就介绍到这了,更多相关redis 哨兵集群搭建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redis中Bloom filter布隆过滤器的学习

    Redis中Bloom filter布隆过滤器的学习

    布隆过滤器是一个非常长的二进制向量和一系列随机哈希函数的组合,可用于检索一个元素是否存在,本文就详细的介绍一下Bloom filter布隆过滤器,具有一定的参考价值,感兴趣的可以了解一下
    2022-12-12
  • 一文搞懂Redis最常用String字符串技能

    一文搞懂Redis最常用String字符串技能

    想要一文搞懂Redis最常用字符串技能?你来对地方了,这篇指南将带你深入浅出,轻松掌握Redis字符串的强大功能,别眨眼,跟我们一起,让数据操作变得前所未有的简单,需要的朋友可以参考下
    2024-03-03
  • Redis过期数据是否会被立马删除

    Redis过期数据是否会被立马删除

    这篇文章主要为大家介绍了Redis过期数据会被立马删除么的问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 详解Redis如何处理Hash冲突

    详解Redis如何处理Hash冲突

    在 Redis 中,哈希表是一种常见的数据结构,通常用于存储对象的属性,对于哈希表,最常遇到的是哈希冲突,那么,当 Redis遇到Hash冲突会如何处理?本文我们将详细介绍Redis如何处理哈希冲突,需要的朋友可以参考下
    2024-09-09
  • 比较几种Redis集群方案

    比较几种Redis集群方案

    Redis高可用集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要sentinel哨兵也能完成节点移除和故障转移的功能,只要将每个节点设置成集群模式,这种集群模式没有中心节点,可水平扩展,官方称可以线性扩展到上万个节点
    2021-06-06
  • 安装Redis就那么几步,很简单

    安装Redis就那么几步,很简单

    Redis是一种非关系型数据库(NoSQL),NoSQL是以key-value的形式存储,和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求,本文重点给大家介绍安装Redis的步骤,需要的朋友参考下吧
    2018-11-11
  • Redis 的各项功能主要解决了什么问题

    Redis 的各项功能主要解决了什么问题

    Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统,你可以把它作为数据库,缓存和消息中间件来使用。这篇文章主要介绍了Redis 的各项功能主要解决了什么问题,需要的朋友可以参考下
    2018-10-10
  • redis中RedissonLock如何实现等待锁的

    redis中RedissonLock如何实现等待锁的

    本文主要介绍了redis中RedissonLock如何实现等待锁的,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Redis5之后版本的高可用集群搭建的实现

    Redis5之后版本的高可用集群搭建的实现

    这篇文章主要介绍了Redis5之后版本的高可用集群搭建的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • redis启动报错Can‘t open the log file: No such file or directory

    redis启动报错Can‘t open the log file: No such file or d

    这篇文章主要介绍了redis启动报错Can‘t open the log file: No such file or directory问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论