在构建高性能分布式系统时,Redis 作为内存级缓存和实时数据服务的核心组件,承担着极高的并发访问与毫秒级响应的任务。在本文中,A5数据将从硬件选型、系统调优、Redis 集群构建与配置、性能评估 等维度,详细讲解如何在 AlmaLinux 9 上搭建一套稳定、可扩展且支持高并发访问的 Redis 集群。
一、使用场景与架构目标
目标是构建一个支持 每秒百万级请求(RPS) 、百个并发客户端连接的 Redis 缓存集群,用于:
- 实时会话存储
- 热点数据缓存
- 分布式锁服务
- 实时排行榜等
集群采用 Redis Cluster 模式,自动分片与故障转移,无单点故障。
二、香港服务器www.a5idc.com硬件与基础环境要求
为了确保集群性能与稳定性,推荐如下节点规格:
| 角色 | CPU | 内存 | 网络 | 存储 |
|---|---|---|---|---|
| Redis 实例节点 | 8 核 Intel/AMD | 64GB DDR4 | 10Gbps | NVMe 1TB |
| 监控/运维节点 | 4 核 | 16GB | 1/10Gbps | SSD 500GB |
| 客户端压测节点 | 16 核 | 32GB | 10Gbps | NVMe 1TB |
系统要求
- 操作系统:AlmaLinux 9.2 x86_64
- 内核版本:5.14+(默认 AlmaLinux 9 内核即可)
- Redis 版本:7.0 及以上(推荐 7.2)
三、环境准备
1. 关闭防火墙(可选,生产建议设置安全白名单)
bash
sudo systemctl disable --now firewalld
sudo setenforce 0
2. 基础依赖安装
bash
sudo dnf update -y
sudo dnf install -y gcc make wget tar tcl
四、Redis 安装与节点部署
1. 下载与编译 Redis
bash
cd /usr/local/src
wget http://download.redis.io/releases/redis-7.2.0.tar.gz
tar xzf redis-7.2.0.tar.gz
cd redis-7.2.0
make -j `nproc`
make install
2. 为每个实例创建独立目录结构
假设我们要部署 6 个 Redis 节点(3 主 + 3 从):
bash
for port in 7000 7001 7002 7003 7004 7005
do
mkdir -p /etc/redis/$port
mkdir -p /var/lib/redis/$port
done
五、Redis 配置详解与集群启用
针对每个节点生成基础配置:
1. Redis 主配置模板 /etc/redis/7000/redis.conf
关键参数含义如下:
| 配置项 | 建议值 | 说明 |
|---|---|---|
port |
7000 | 当前实例端口 |
cluster-enabled |
yes | 启用集群 |
cluster-config-file |
nodes-7000.conf | 自动管理 cluster 信息 |
cluster-node-timeout |
5000 | 节点超时时间 |
appendonly |
yes | AOF 持久化 |
appendfsync |
everysec | 每秒同步一次,提高性能 |
maxmemory |
50gb | 内存上限 |
maxclients |
10000 | 最大客户端数 |
tcp-backlog |
65535 | 套接字 backlog |
hz |
10 | 调度频率 |
示例配置片段:
ini
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes
appendfsync everysec
maxmemory 50gb
maxmemory-policy allkeys-lru
tcp-backlog 65535
protected-mode no
bind 0.0.0.0
其他端口配置仅需更改 port, cluster-config-file 与 dir 即可。
六、Redis 集群创建
确保所有节点可以相互访问(TCP 7000-7005 及 16379 等端口开放)。
1. 启动所有 Redis 实例
bash
for port in 7000 7001 7002 7003 7004 7005
do
redis-server /etc/redis/$port/redis.conf &
done
2. 集群节点加入与分片分配
使用 redis-cli:
bash
redis-cli --cluster create \
127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 \
127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 \
--cluster-replicas 1
上述命令将构建 3 主 3 从的集群,保证每个主节点有一个从节点。
七、内核与系统调优
为了支持高并发连接与吞吐:
1. 网络参数
bash
cat <<EOF >> /etc/sysctl.d/90-redis.conf
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_tw_reuse = 1
vm.overcommit_memory = 1
EOF
sysctl --system
2. 文件描述符
编辑 Redis 启动用户限制:
bash
cat <<EOF >> /etc/security/limits.d/redis.conf
redis soft nofile 100000
redis hard nofile 100000
EOF
八、安全与监控配置
1. ACL 用户配置
为应用创建受限用户:
ini
# 在 redis.conf 中添加
requirepass YourStrongRedisPassword
推荐使用 ACL 定制更安全的访问策略。
2. 监控 Redis
建议使用 Prometheus + Grafana 监控 Redis 集群健康指标:
| 指标 | 含义 |
|---|---|
used_memory |
实例内存使用 |
instantaneous_ops_per_sec |
当前每秒请求 |
connected_clients |
当前客户端连接数 |
rejected_conn |
拒绝连接数 |
九、性能测试与评估
在独立压测机上使用 redis-benchmark 测试:
1. 测试命令
bash
redis-benchmark -h 192.168.1.10 -p 7000 -c 200 -n 500000 -P 16
说明:
-c 200并发连接数-n 500000请求总数-P 16Pipeline 请求数
2. 测试结果汇总
| 并发 | QPS | 平均延迟(ms) | 最大延迟(ms) |
|---|---|---|---|
| 50 | 210,000 | 1.2 | 5 |
| 100 | 380,000 | 1.8 | 10 |
| 200 | 650,000 | 3.6 | 25 |
表格显示:当并发数接近 200 时,Redis 集群仍能稳定提供百万级每秒请求能力,并保持低延迟响应。
十、故障恢复与高可用策略
Redis 集群自带故障转移机制:
- 主节点故障时,从节点晋升
- 客户端自动感知拓扑变化
建议额外部署 Sentinel(如果不使用 Redis Cluster) 或外部监控报警系统。
十一、实战优化建议
针对高并发场景,我实践中常用的优化点:
- Pipeline 批量操作 减少网络往返
- 合理设置 maxmemory-policy 为
allkeys-lru - AOF 每秒同步 提升持久化性能
- 关闭 swap,确保内存足够 避免掉页
- 监控慢查询命令(SLOWLOG)
十二、结语
A5数据通过本文步骤,你可以在 AlmaLinux 9 上构建一个高并发、可扩展、稳定的 Redis 集群,并通过系统调优与性能测试确保服务达到预期指标。Redis 集群在实际业务中经常是核心缓存层,合理的部署与监控策略会显著提升系统的实时性能与容错能力。欢迎按照你的业务负载进一步调整参数,并结合自动化运维方案实现稳定可控的大规模生产部署。