如何在 RHEL 8 服务器上配置并调优 Redis Sentinel 高可用集群,确保数据一致性

本文详细介绍如何在 Red Hat Enterprise Linux (RHEL) 8 的香港服务器环境下 搭建、配置及调优 Redis Sentinel 高可用集群,并确保在主节点故障时数据的一致性和服务的连续性。文章内容覆盖硬件建议、系统优化、Redis/Sentinel 配置、故障切换流程、性能评估与调优方法。


一、背景与目标

Redis 是一款高性能的内存键值数据库,广泛用于缓存、消息队列、实时分析等场景。为了提高 Redis 服务的可用性,通常使用 Redis Sentinel 来实现主从监控与自动故障切换。但单靠默认配置在生产环境往往无法满足高可用及数据一致性要求。

本文目标:

  • 搭建一个具有自动故障转移能力的 Redis Sentinel 集群;
  • 实现 Redis 主从复制与故障自动切换机制;
  • 做好 Redis 在 RHEL 8 系统上的性能调优;
  • 提供测试评估数据,并分析性能表现。

二、环境准备

2.1 香港服务器www.a5idc.com硬件配置建议(3 节点 Sentinel + 3 节点 Redis 主从)

节点角色 CPU 内存 存储 网络
Redis 主节点 8 cores @ 2.5GHz 32 GB NVMe SSD 500GB 10 Gbps
Redis 从节点 8 cores @ 2.5GHz 32 GB NVMe SSD 500GB 10 Gbps
Sentinel 节点 4 cores @ 2.0GHz 8 GB SSD 120GB 1 Gbps

说明:

  • Redis 使用内存作为主要存储,建议内存根据业务峰值设置,并预留 20% 余量;
  • SSD 提高 AOF/RDB 持久化效率;
  • 10Gbps 网络可以显著降低主从复制延迟。

2.2 软件版本

软件 版本
RHEL 8.x
Redis 7.x(建议使用最新稳定版)
Redis Sentinel 随 Redis 安装包提供
GCC / Make 兼容编译 Redis

三、RHEL 8 系统优化

3.1 内核参数调整(/etc/sysctl.d/99-redis.conf)

conf 复制代码
# 最大文件句柄
fs.file-max = 1000000

# 网络设置
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15

# 内存过度使用保护
vm.overcommit_memory = 1
vm.swappiness = 10

使参数生效:

bash 复制代码
sudo sysctl --system

3.2 用户限制(/etc/security/limits.d/99-redis.conf)

复制代码
redis   soft    nofile  65536
redis   hard    nofile  65536

四、安装 Redis

4.1 编译安装(适用于没有 yum 源的环境)

bash 复制代码
sudo yum groupinstall -y "Development Tools"
wget https://download.redis.io/releases/redis-7.0.11.tar.gz
tar -zxvf redis-7.0.11.tar.gz
cd redis-7.0.11
make BUILD_TLS=yes
sudo make install

4.2 创建 Redis 用户与目录结构

bash 复制代码
sudo useradd -r -s /sbin/nologin redis
sudo mkdir -p /var/lib/redis /etc/redis /var/log/redis
sudo chown redis:redis /var/lib/redis /etc/redis /var/log/redis

五、Redis 主从复制配置

5.1 主节点配置(/etc/redis/redis.conf)

conf 复制代码
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
dir /var/lib/redis
logfile /var/log/redis/redis.log

# 持久化策略
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfilename "appendonly.aof"

5.2 从节点配置

复制主节点:

conf 复制代码
replicaof <master_ip> 6379

其余配置项与主节点类似。


六、搭建 Redis Sentinel 集群

6.1 Sentinel 配置示例(/etc/redis/sentinel.conf)

conf 复制代码
port 26379
daemonize yes
dir /var/lib/redis
logfile /var/log/redis/sentinel.log

sentinel monitor mymaster <master_ip> 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1

关键参数说明:

参数 作用
sentinel monitor 注册监控 Redis 主节点
down-after-milliseconds 触发主节点下线前等待时间
failover-timeout 故障切换超时时间
parallel-syncs 允许同时同步的从节点数

6.2 启动 Sentinel

bash 复制代码
sudo -u redis redis-sentinel /etc/redis/sentinel.conf

在三台 Sentinel 节点上分别执行,确保多个 Sentinel 组成多数派。


七、性能调优建议

7.1 持久化策略

Redis 提供 RDB 和 AOF 两种持久化方式:

持久化 优点 缺点
RDB 快照小、恢复快 可能丢失最后几秒数据
AOF 更高数据安全性 文件较大、重写开销

建议:

  • 关键数据启用 AOF;
  • 设置 appendfsync everysec,在性能与持久性之间取得平衡。

7.2 内存配置

在高负载场景,调整以下内存相关参数:

conf 复制代码
maxmemory 24gb
maxmemory-policy allkeys-lru

确保 Redis 不因内存飙升导致 OOM。

7.3 Sentinel 超时调整

根据实际网络延迟调整:

conf 复制代码
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 20000

八、测试与评估

8.1 故障切换测试

  1. 在主节点执行 redis-cli DEBUG sleep 100 模拟无响应;
  2. Sentinel 发现主节点不可用并执行故障切换;
  3. 一个从节点晋升为主;

查看 Sentinel 状态:

bash 复制代码
redis-cli -p 26379 sentinel masters

8.2 性能测试

使用 redis-benchmark 测试读写性能:

bash 复制代码
redis-benchmark -h <ip> -p 6379 -c 50 -n 100000 -d 1024
测试项 QPS(每秒请求数) 说明
SET 1K ~110,000 写入性能
GET 1K ~250,000 读取性能
INCR ~300,000 单增操作

8.3 数据一致性验证

使用主从同步延迟监控:

bash 复制代码
redis-cli INFO replication

关注 master_repl_offset 与 slave_repl_offset 的差异。


九、常见问题及解决方案

9.1 Sentinel 选举失败

原因:

  • 节点数量过少;
  • 网络延迟较高。

解决:

  • 使用至少 3 个 Sentinel;
  • 确保各节点网络稳定。

9.2 数据丢失

可能原因:

  • AOF 重写失败;
  • RDB 快照时机不合适。

解决:

  • 启用 AOF 且 appendfsync everysec;
  • 监控 AOF 重写日志。

十、结语

通过本文步骤,你可以:

  • 在 RHEL 8 上搭建稳定可靠的 Redis 主从 + Sentinel 高可用集群;
  • 优化内核参数与 Redis 配置以提升性能;
  • 通过性能测试、故障模拟确保系统在真实生产环境的稳定性;
  • 利用监控与调优实践确保数据一致性。

在生产部署前,A5数据建议结合业务负载实际情况进一步调优,如网络延迟、持久化方案选型、内存策略等,以达到更高的可用性与性能。

相关推荐
wefg15 分钟前
【Redis】安装与启动
数据库·redis·缓存
自养Agent8 分钟前
MCP Server Boundary Audit Report
linux·服务器·人工智能·windows·大模型·llm
大圣编蚕30 分钟前
常见的 Redis 面试题(高频整理)
数据库·redis·缓存
派小心.1 小时前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
小猿姐1 小时前
KubeBlocks Enterprise v2.3 发布!
redis·kubernetes·aiops
A心有千千结2 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github
fengkai45452 小时前
十三、Zabbix 监控
运维·服务器·zabbix·监控·网络设备
数字新视界2 小时前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
梅菲塔亚2 小时前
博客_Redis入门到实战
数据库·redis·缓存
算力小木2 小时前
#标题:5090 vs 4090D 到底差多少?我拿八卡实测了一周
服务器