Redis哨兵模式:什么是哨兵模式、哨兵模式的优缺点、哨兵模式的主观下线和客观下线、投票选举、Redis 哨兵模式搭建

本文主要是介绍Redis哨兵模式:什么是哨兵模式、哨兵模式的优缺点、哨兵模式的主观下线和客观下线、投票选举、Redis 哨兵模式搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 什么是哨兵模式
  • 哨兵模式的优缺点
  • 主观下线和客观下线
  • 投票选举
  • 哨兵模式场景应用
  • Redis version 6.0.5 集群搭建
    • 下载文件
    • 环境安装
    • 解压
    • 编译
    • 配置文件
    • 启动
    • 关闭
    • 密码设置

什么是哨兵模式

哨兵模式是Redis的高可用解决方案之一,它旨在提供自动故障转移和故障检测的功能。在传统的Redis部署中,单个Redis节点可能成为单点故障,一旦该节点宕机,整个系统将不可用。为了解决这个问题,哨兵模式引入了多个Redis节点,其中一个节点被选为主节点,其他节点作为从节点。
在这里插入图片描述
在上面模式中,哨兵主要有几个作用:

  • 监控状态:会向所有监控对象每秒发送ping命令,通过是否有响应来判断master和所有slave节点状态。
  • 故障转移:当一旦发现Master节点异常,它将尝试进行故障转移,选择新的slave节点为master节点,并通过发布订阅的方式通知其他slave节点修改配置。
    但在上面的模式中,哨兵节点也存在单点故障。因此,为防止Sentinel发生意外,Sentinel也需要实现集群高可用。

哨兵模式的优缺点

优点:
自动故障转移,提高系统的高可用性。
具有主从复制模式的所有优点,如数据冗余和读写分离。
缺点:
配置和管理相对复杂。
依然无法实现数据分片,受单节点内存限制。

主观下线和客观下线

主观下线是指一个哨兵节点认为主节点不可用,但它并不确定其他哨兵节点是否也认为主节点不可用。当一个哨兵节点在一定时间(配置参数:down-after-milliseconds)内无法与主节点通信(比如发送PING命令没有收到响应),它会认为主节点下线。但在这个阶段,其他哨兵节点并不知道这个节点的状态,仅有一个哨兵主观地认为主节点宕机。

客观下线是指一个主节点被多数哨兵节点认定为不可用。当一个哨兵节点认为主节点宕机后,它会向其他哨兵节点询问对主节点的状态,并请求其他哨兵进行确认。如果多数(大多数至少需要半数加1)的哨兵节点都认为主节点不可用,那么主节点就会被判定为客观下线。客观下线意味着主节点的状态在整个哨兵集群中得到了确认。

主观下线和客观下线的引入是为了避免误判。如果只有一个哨兵节点认为主节点下线,那么很可能是网络抖动等原因导致的,此时并不应该进行故障转移。只有多数的哨兵节点都确认主节点下线,才能确保故障转移的正确性,保证整个集群的稳定性。

哨兵模式使用主观下线和客观下线状态的组合来实现可靠的主节点故障检测和故障转移,从而确保Redis集群的高可用性。

投票选举

在多Sentinel模式下,各节点会相互监控主从节点的健康状态。当主节点发生故障时,首先由Sentinel节点之间基于Raft算法进行投票选举,按照谁发现主节点故障谁去处理的原则,选举出一个领头Sentinel节点(Leader Sentinel)。这个领头Sentinel节点负责进行故障转移操作。

故障转移过程中,领头Sentinel节点会根据一定的规则在所有从节点中选择一个最优的从节点作为新的主节点(Master)。一般会选择复制偏移量最大且优先级较高的从节点作为新的主节点。然后,领头Sentinel节点通过发布订阅功能,通知其他从节点更改配置文件,将它们的连接从原来的主节点转移到新的主节点上。

对于客户端来说,连接Redis集群时首先连接到Sentinel节点,通过Sentinel节点查询主节点的地址。一旦主节点发生故障并进行了故障转移,Sentinel节点会将最新的主节点地址告知客户端。这样,客户端无需重启,就可以自动连接到新的主节点,实现高可用性的数据交互。

哨兵模式场景应用

高可用性要求较高的场景:通过自动故障转移,确保服务的持续可用。
数据备份和容灾恢复:在主从复制的基础上,提供自动故障转移功能。
总结:哨兵模式在主从复制模式的基础上实现了自动故障转移,提高了系统的高可用性。然而,它仍然无法实现数据分片。如果需要实现数据分片和负载均衡,可以考虑使用Cluster模式。

Redis version 6.0.5 集群搭建

下载文件

在这里插入图片描述

下载 命令 url 可找官网  复制
wget http://download.redis.io/releases/redis-6.0.5.tar.gz

环境安装

yum install gcc-c++
yum install cpp 
yum install binutils
yum install glibc 
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

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

解压

创建redis文件夹
cd /home
mkdir redis
cd redis
解压 
tar -zxvf redis-6.0.5.tar.gz
重命名
mv redis-6.0.5 redis-1
复制 
cp -r redis-1 redis-2
cp -r redis-1 redis-3 

编译

cd /home/redis/redis-1
每一个redis执行下行命令
scl enable devtoolset-9 bash
如果以以下编译安装 的命令失败 基本上是因为 环境安装问题 可以直接百度 相关更全面的安装环境
make MALLOC=lib
make install

配置文件

重要的配置看截图,ip地址以及格式请注意
master redis.conf 配置
在这里插入图片描述
在这里插入图片描述

vim /home/redis/redis-1/redis.conf
bind 0.0.0.0
protected-mode yes
port 16379
supervised no
pidfile "/home/redis/pid/16379.pid"
loglevel notice
logfile "/home/redis/log/16379.log"
databases 16
dir "/home/redis/data"
dbfilename dump16379.rdb
appendonly yes  # 开启 aof  默认不开启 
appendfilename "appendonly_16379.aof"
daemonize yes

混合持久化模式的开启
在这里插入图片描述

master sentinel.conf 配置

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

bind 0.0.0.0
port 26379
pidfile /home/redis/pid/-sentinel-26379.pid
logfile "/home/redis/log/sentinel-26379.log"
下面配置的ip 配置公网ip port 配置  master redis.conf  配置中的port
sentinel monitor mymaster ip 16379 2slave redis.confbind 0.0.0.0
port 16380
daemonize yes
pidfile "/home/redis/pid/16380.pid"
logfile "/home/redis/log/16380.log"
dir "/home/redis/data"
appendonly yes  # 开启 aof  默认不开启 
appendfilename "appendonly_16380.aof"
slaveof masterIp masterPortslave sentinel.conf 配置bind 0.0.0.0
port 26380
daemonize yes
pidfile "/home/redis/pid/sentinel-26380.pid"
logfile "/home/redis/log/sentinel-26380.log"
下面配置的ip 配置公网ip port 配置  master redis.conf  配置中的port
sentinel monitor mymaster MasterIP MasterPort 2

启动

启动脚本

#!/bin/bash# 启动 Redis-Server
echo "Star Redis-Server ..."redis-1/src/redis-server redis-1/redis.conf &# sleep 1 睡眠1秒
# sleep 1s 睡眠1秒
# sleep 1m 睡眠1分
# sleep 1h 睡眠1小时
sleep 3redis-2/src/redis-server redis-2/redis.conf &
redis-3/src/redis-server redis-3/redis.conf &# 启动 Redis-Sentinel
echo "Star Redis-Sentinel ..."redis-1/src/redis-sentinel redis-1/sentinel.conf &
redis-2/src/redis-sentinel redis-2/sentinel.conf &
redis-3/src/redis-sentinel redis-3/sentinel.conf &

关闭

关闭脚本

#!/bin/bash
# 停止 Redis-Server
echo "Shutdown Redis-Sentinel ..."
redis-1/src/redis-cli -h 公网ip -p 16379 shutdown
redis-2/src/redis-cli -h 公网ip -p 16380 shutdown
redis-3/src/redis-cli -h 公网ip -p 16381 shutdown
# 停止 Redis-Server
echo "Shutdown Redis-Server ..."
redis-1/src/redis-cli -h  公网ip -p 26379 -a 123456 shutdown
redis-2/src/redis-cli -h  公网ip -p 26380 -a 123456 shutdown
redis-3/src/redis-cli -h  公网ip -p 26381 -a 123456 shutdown

密码设置


# 两台机器一台master,一台slave,两个sentinel
#master修改
#1. redis.conf
requirepass 123456        #添加密码
#2. sentinel.conf
sentinel auth-pass mymaster 123456     #连接master密码
#slave修改
#1. redis.conf
masterauth 123456    #连接master密码
slaveof 10.100.134.109 6379  #slaveof表示该机器是slave,后边ip为master地址和端口
#2. sentinel.conf
sentinel auth-pass mymaster 123456     #连接master密码,这个配置一定要在sentinel monitor 配置之后

这篇关于Redis哨兵模式:什么是哨兵模式、哨兵模式的优缺点、哨兵模式的主观下线和客观下线、投票选举、Redis 哨兵模式搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/482169

相关文章

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Redis延迟队列的实现示例

《Redis延迟队列的实现示例》Redis延迟队列是一种使用Redis实现的消息队列,本文主要介绍了Redis延迟队列的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、什么是 Redis 延迟队列二、实现原理三、Java 代码示例四、注意事项五、使用 Redi

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

redis-cli命令行工具的使用小结

《redis-cli命令行工具的使用小结》redis-cli是Redis的命令行客户端,支持多种参数用于连接、操作和管理Redis数据库,本文给大家介绍redis-cli命令行工具的使用小结,感兴趣的... 目录基本连接参数基本连接方式连接远程服务器带密码连接操作与格式参数-r参数重复执行命令-i参数指定命

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二