Redis 7.2.x 主从复制+哨兵模式

2024-06-07 08:04

本文主要是介绍Redis 7.2.x 主从复制+哨兵模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

IP操作系统服务版本
192.168.140.153CentOS 7redis-master,sentinel7.2.5
192.168.140.156CentOS 7redis-slave,sentinel7.2.5
192.168.140.159CentOS 7redis-slave,sentinel7.2.5

一、安装Redis + 配置主从复制

参考下面文档:

Redis 7.2.x 主从复制-CSDN博客文章浏览阅读59次。搭建 Redis 7.2.x 主从复制,一主一从https://blog.csdn.net/weixin_44295677/article/details/139475019?spm=1001.2014.3001.5502

二、配置哨兵

1、修改内核参数
vi /etc/sysctl.confvm.overcommit_memory = 1# 0 (默认值): 启发式内存提交策略。内核会尝试猜测进程是否会真正使用它们请求的所有内存。是一个很好的默认设置,允许进程请求大量内存,而实际上可能并不需要这么多。
# 1: 总是允许内存提交。无论物理内存和交换空间是否足够,内核都会允许进程提交内存。会导致在内存不足时,系统无法分配更多的内存,并导致OOM(Out-Of-Memory)被激活,杀死一些进程以释放内存。
# 2: 使用/proc/meminfo中的CommitLimit值来决定是否允许内存提交。如果请求的内存加上当前已提交的内存超过了CommitLimit,那么内存提交会被拒绝。
2、修改配置
cp /opt/redis-7.2.5/sentinel.conf /opt/redis/
vi /opt/redis/sentinel.conf# 修改内容如下
## 端口
port 26379
## 允许后台运行
daemonize yes
## 进程号存放位置
pidfile "/opt/redis/redis-sentinel.pid"
## 日志级别,如果想要更详细的可以设置成debug
loglevel notice
## 日志存放路径
logfile "/opt/redis/logs/redis-sentinel.log"
## 工作目录
dir "/opt/redis"
## 监听的主节点信息
sentinel monitor mymaster 192.168.140.153 6379 2
## sentinel判断redis主服务器下线所需要的时间,单位毫秒
sentinel down-after-milliseconds mymaster 10000
## redis主服务器故障转移的最大超时时间
sentinel failover-timeout mymaster 60000
## 故障转移时,最多允许几个从服务器同时向新的主服务器转移数据
sentinel parallel-syncs mymaster 2
## 向主服务器认证所需要的密码
sentinel auth-pass mymaster final123
3、创建服务脚本
vi /etc/systemd/system/sentinel.service[Unit]
Description=Sentinel service
After=network.target[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/redis/bin/redis-sentinel /opt/redis/sentinel.conf --sentinel --daemonize no
PrivateTmp=true
Restart=always[Install]
WantedBy=multi-user.target
4、启动服务
systemctl daemon-reloadsystemctl start sentinel.servicesystemctl enable sentinel.service

三、测试

1、主服务器查看 主从复制相关信息

可以看到当前master是192.168.140.153

[root@localhost redis]# redis-cli -h 192.168.140.153
192.168.140.153:6379> auth final123
OK
192.168.140.153:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.140.156,port=6379,state=online,offset=957428,lag=1
slave1:ip=192.168.140.159,port=6379,state=online,offset=957283,lag=1
master_failover_state:no-failover
master_replid:9ec1820323cd826f2955176a75e99dbdfde51f30
master_replid2:2840abf8606e7ea7237bfa1f03225898e634d2a4
master_repl_offset:957428
second_repl_offset:396279
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:97903
repl_backlog_histlen:859526
2、启停主服务器的redis服务
# 停止主服务器的redis服务
systemctl stop redis.service# 间隔10秒,等待故障转移完成,启动服务
systemctl start redis.service
3、查看sentinel日志

可以看到当前主节点已经转移到192.168.140.159机器上

[root@localhost redis]# tail -f logs/redis-sentinel.log
1460:X 05 Jun 2024 23:17:20.936 # +sdown slave 192.168.140.153:6379 192.168.140.153 6379 @ mymaster 192.168.140.159 6379
4、查看主节点是否转移

在159服务器查看redis主从信息,发现159的角色已经变为master,故障转移成功

[root@localhost redis]# redis-cli -h 192.168.140.159
192.168.140.159:6379> auth final123
OK
192.168.140.159:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.140.156,port=6379,state=online,offset=1074384,lag=0
slave1:ip=192.168.140.153,port=6379,state=online,offset=1074384,lag=0
master_failover_state:no-failover
master_replid:401449cc3f667d6032124da09b2002dbd1a36a52
master_replid2:9ec1820323cd826f2955176a75e99dbdfde51f30
master_repl_offset:1074384
second_repl_offset:967527
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:408285
repl_backlog_histlen:666100

这篇关于Redis 7.2.x 主从复制+哨兵模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

Redis Pipeline(管道) 详解

《RedisPipeline(管道)详解》Pipeline管道是Redis提供的一种批量执行命令的机制,通过将多个命令一次性发送到服务器并统一接收响应,减少网络往返次数(RTT),显著提升执行效率... 目录Redis Pipeline 详解1. Pipeline 的核心概念2. 工作原理与性能提升3. 核

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Redis在windows环境下如何启动

《Redis在windows环境下如何启动》:本文主要介绍Redis在windows环境下如何启动的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis在Windows环境下启动1.在redis的安装目录下2.输入·redis-server.exe

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3