首页 > 数据库 >Redis篇之Redis高可用模式参数调优,提高Redis性能

Redis篇之Redis高可用模式参数调优,提高Redis性能

时间:2024-12-17 18:57:23浏览次数:6  
标签:mymaster 故障 Redis sentinel 调优 参数 Sentinel 节点

1. Redis高可用模式核心

Redis高可用模式的核心是使用主从复制和自动故障转移机制来确保系统在某些节点发生故障时仍然可以正常工作。

常用的高可用架构包括Redis Sentinel模式和Redis Cluster模式,其中Sentinel模式是为了提供高可用性而专门设计的解决方案。

在Redis Sentinel模式下,Sentinel负责监控Redis实例,自动进行故障转移并通知客户端。为了优化Redis高可用模式,我们需要关注一些关键的参数配置。
下面我们将讨论Redis Sentinel高可用模式的常见调优参数,并提供调优后的配置文件。

2. Redis高可用模式参数调优

2.1. Redis Sentinel模式的主要参数调优

Redis Sentinel的配置文件和Redis主从复制有一些相似之处,但也有其特有的监控和故障转移相关参数。以下是一些常见的调优参数。

(1) Sentinel配置文件 (sentinel.conf)
在Redis Sentinel模式中,每个Sentinel节点有自己的配置文件。这个配置文件控制了Sentinel的行为,包括故障转移、监控策略和通知机制。

# Sentinel监控主Redis节点的地址与端口
sentinel monitor mymaster 127.0.0.1 6379 2

# 配置主节点的宕机时间检测
# 当检测到主节点不可用超过10秒时,Sentinel会认为该主节点宕机
sentinel down-after-milliseconds mymaster 10000

# Sentinel故障转移的超时设置
# 如果在10秒内没有完成故障转移,则会放弃
sentinel failover-timeout mymaster 180000

# 配置主从切换时,从节点被选举为主节点的最大时间
sentinel parallel-syncs mymaster 1

# 配置Sentinel监控主节点和从节点的心跳检测间隔
sentinel client-reconfig-script mymaster /path/to/script.sh

# 配置Sentinel报警通知脚本
sentinel notification-script mymaster /path/to/alert.sh

# 配置最大失败通知次数
sentinel auth-pass mymaster <password>  # 如果启用了Redis的密码保护,Sentinel也需要配置密码

# 启动时连接到主Redis实例的配置
# 主要用于初始化Sentinel节点
port 26379

# 启用日志记录
logfile "/var/log/redis/sentinel.log"

# 配置日志级别
loglevel notice  # 记录通知级别日志

(2) Redis主从复制配置文件 (redis.conf)
在Redis的主节点和从节点的配置文件中,需要启用主从复制功能,并且有些参数也对高可用性有影响。

主节点配置 (redis.conf)

# 启用主节点模式
# 不需要特别设置,只需启动Redis作为主节点
bind 0.0.0.0  # 允许从任意IP连接

# 启用持久化,可以选择RDB或AOF方式
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec

# 最大客户端连接数,防止连接过多导致主节点崩溃
maxclients 10000

# 配置Redis的内存上限,防止内存过载
maxmemory 4gb

# 设置内存回收策略
maxmemory-policy volatile-lru

从节点配置 (redis.conf)

# 配置从节点,连接到主节点
slaveof 127.0.0.1 6379

# 启用从节点的持久化,推荐开启AOF
appendonly yes
appendfsync everysec

# 配置最大连接数,确保负载均衡
maxclients 10000

# 配置客户端超时,避免长时间无响应的连接占用资源
timeout 3000  # 3秒超时

# 启用内存限制
maxmemory 4gb
maxmemory-policy volatile-lru

(3) Redis高可用优化的核心参数解释

  1. sentinel monitor mymaster:该参数用于指定Sentinel监控的主Redis实例。如果Redis Sentinel检测到主节点不可用,则会自动进行故障转移。

  2. sentinel down-after-milliseconds:设置Sentinel监控主节点时,在主节点不可用多少毫秒后,认为该节点是不可用的。默认是30秒,但可以调低此值以加快故障检测。

  3. sentinel failover-timeout:当主节点发生故障时,Sentinel会等待多长时间来完成故障转移操作。默认是180秒,这个值过长可能导致系统长时间不可用,过短可能会导致频繁的故障转移。

  4. sentinel parallel-syncs:该参数控制故障转移期间有多少个从节点可以同时同步主节点数据。调整此参数可以提高故障转移的效率。

  5. maxclients:限制每个Redis实例的最大客户端连接数,避免Redis因处理过多连接而导致资源耗尽。

  6. maxmemory 和 maxmemory-policy:配置内存限制和内存淘汰策略。高可用的Redis实例应该配置合理的内存上限,避免因内存溢出导致实例崩溃。

  7. appendonly 和 appendfsync:启用AOF(Append-Only File)持久化,确保在发生故障时数据不会丢失。appendfsync参数可以选择每秒同步一次,避免对性能的影响。

2.2. 故障转移和主从切换的优化

(1) 设置合理的故障转移时机
合理的故障转移时机对于高可用性至关重要。为了确保在主节点不可用时尽快切换,可以将down-after-milliseconds设置为较低值(例如10秒),以便快速检测到主节点的故障。

(2) 配置合理的并行同步数
sentinel parallel-syncs决定了故障转移期间多少个从节点可以同时同步主节点数据。可以根据集群规模和从节点性能调整此值。通常建议设置为1到2,避免过多从节点同时进行数据同步时造成性能瓶颈。

(3) 增加Sentinel的数量
为了提高Redis高可用性,建议部署多个Sentinel节点,至少三个Sentinel节点。通过投票机制,Sentinel节点可以判断是否进行故障转移,并避免单点故障。

3. 配置文件示例

下面是一个针对Redis高可用模式(主从复制 + Sentinel)的配置文件示例。
主节点 (redis.conf)

bind 0.0.0.0
port 6379

# 持久化设置
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec

# 最大客户端连接数
maxclients 10000

# 内存设置
maxmemory 4gb
maxmemory-policy volatile-lru

从节点 (redis.conf)

bind 0.0.0.0
port 6379

# 配置从节点
slaveof 127.0.0.1 6379

# 持久化设置
appendonly yes
appendfsync everysec

# 最大客户端连接数
maxclients 10000

# 内存设置
maxmemory 4gb
maxmemory-policy volatile-lru

Sentinel节点 (sentinel.conf)

port 26379

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

logfile "/var/log/redis/sentinel.log"
loglevel notice

# 如果启用了Redis密码保护,配置认证密码
sentinel auth-pass mymaster <password>

4. 总结

Redis高可用模式的调优需要根据实际的硬件资源、网络状况和业务需求来调整参数。
主要优化方向包括故障转移检测、从节点同步速度、客户端连接数限制、内存使用限制等。合理配置这些参数可以大幅提高Redis集群的高可用性和稳定性。

标签:mymaster,故障,Redis,sentinel,调优,参数,Sentinel,节点
From: https://blog.csdn.net/xu710263124/article/details/144541741

相关文章

  • Redis从基础到深入
    Redis从基础到深入一、Redis是什么?Redis是一个开源的高性能键值存储、内存操作的数据库,支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,广泛应用于缓存、消息队列、实时分析等场景。二、常见的数据类型String:最基本的数据类型,可存储字符串、整数、浮点数。Ha......
  • Redis的使用--排行榜实现
    在项目中,我们常对于能在某段时间内持续使用的数据添加到缓存中,以便于能更快的做出响应和减少对数据库的操作,例如一些图片数据,并衍生出如后端防抖,限时的短信验证码校验,这里我们主要是对排行榜功能的实现在地球生做Java后端的你,如果遇到一个需求是实现排行榜功能:一定会在第一时......
  • 【YashanDB知识库】误配置SYSTEM级别的STATISTICS_LEVEL参数为ALL导致数据库性能下降
    本文内容来自YashanDB官网,原文内容请见https://www.yashandb.com/newsinfo/7664890.html?templateId=1718516【标题】误配置SYSTEM级别的STATISTICS_LEVEL参数为ALL导致数据库性能下降【问题分类】数据库性能下降【关键字】STATISTICS_LEVEL数据库性能freebufferwait等待......
  • 揭秘语言模型后训练:指令微调、偏好调优与强化学习的深度解析
    揭秘语言模型后训练:指令微调、偏好调优与强化学习的深度解析前言1.什么是后训练?2.指令微调(InstructionFine-Tuning,SFT)概念训练流程实践示例:TÜLU33.偏好调优(PreferenceTuning,DPO)概念关键步骤DPO的优势实践示例:TÜLU34.强化学习与可验证奖励(RLVR)概念RLVR流......
  • atrace参数说明
    atrace是Android系统中一个非常有用的工具,广泛用于性能分析和调试。它通过记录和分析系统的各种事件来帮助开发者找出应用或系统性能瓶颈,尤其是在处理多任务或多线程的情况时,能提供非常详细的调试信息。1. 基本用法atrace允许你通过命令行收集系统和应用的跟踪数据,并生成性......
  • crash_arm参数说明
    1、bt常用的参数有-t-l 显示内核堆栈回溯。如果没有给出参数,将显示当前上下文的堆栈将显示当前上下文的堆栈跟踪。-a显示每个CPU上活动任务的堆栈跟踪。(仅适用于崩溃转储)-A与-a相同,但也显示向量寄存器(仅限S390X)。-p仅显......
  • 滑动变阻器的主要特性和参数有哪些?
    滑动变阻器是一种常见的电阻调节装置,其主要特性和参数如下:电阻值范围:滑动变阻器的电阻值范围是指其最小电阻值到最大电阻值之间的范围。这个范围通常由滑动变阻器的设计决定,一般在几欧姆到几千欧姆之间。额定功率:滑动变阻器的额定功率是指其能够承受的最大电功率。如果超过这个......
  • docker 搭建redis一主两三哨兵(redis:6.2.14-alpine)
     前言   一般来说,因为性能,安全,持久化等问题,docker搭建的环境时很少推荐用来当生产环境的,但是最近公司的一个项目居然要用docker来搭建生产环境,没办法,客户就时上帝,客户说啥就是啥。  当然这次部署还有用docker部署nacos集群、minio集群、mysql主从、rabbitmq集群,......
  • 分布式高速缓存Redis
    Redis是一个开源的(BSD许可)、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是关于Redis作为分布式高速缓存的详细内容:一、基本概念与特点高速性能Redis将数据存储在内存中,内存的读写速度远远高于磁盘。这使得Redis能够在极短的时间内处理大量的读写请求......
  • Redis的介绍以及安装
    本篇转载黑马课程的md文件,仅供学习使用介绍:Redis是一种键值型的NoSql数据库,这里有两个关键字:键值NoSql其中键值型,是指Redis中存储的数据都是以key.value对的形式存储,而value的形式多种多样,可以是字符串.数值.甚至json:而NoSql则是相对于传统关系型数据库而言,有很大差异......