在生产环境中,Redis 单节点存在单点故障风险。为了实现高可用与数据自动分片,我们推荐使用 Redis Cluster 集群方案。本文将带你从零开始,手把手完成一套 三台服务器、主从互备 的高可用 Redis 集群搭建。
🧩 一、集群规划概览
| 服务器IP | 主节点端口 | 从节点端口 | 从节点复制来源 |
|---|---|---|---|
| 10.10.10.35 | 7000 | 7003 | 复制 36 服务器主节点 |
| 10.10.10.36 | 7001 | 7004 | 复制 37 服务器主节点 |
| 10.10.10.37 | 7002 | 7005 | 复制 35 服务器主节点 |
✅ 规划说明:
三台服务器互为主从,一台宕机仍有两台主节点可维持集群运行。
这是 Redis Cluster 正常运行的基本条件(主节点必须多数在线)。
⚙️ 二、基础安装
在三台服务器上执行相同的安装操作(建议 Redis ≥ 5.0):
sudo yum update -y sudo yum install -y redis
验证是否安装成功:
redis-server -v
📁 三、节点目录与配置文件
1️⃣ 创建目录结构
Redis 集群中每个节点(端口)都需独立目录来存放配置文件与数据。
以 /opt/redis-cluster 为根目录:
sudo mkdir -p /opt/redis-cluster
cd /opt/redis-cluster
sudo mkdir 7000 7001 7002 7003 7004 7005
💡 注意:
每台服务器仅需创建本机负责的两个端口。例如:
10.10.10.35 → 7000、7003
10.10.10.36 → 7001、7004
10.10.10.37 → 7002、7005
2️⃣ Redis 配置模板
以 7000 节点为例(文件路径:/opt/redis-cluster/7000/redis.conf):
# 网络绑定
bind 0.0.0.0
port 7000
protected-mode no
# 进程管理
daemonize yes
pidfile /var/run/redis_7000.pid
# 日志配置
logfile "/var/log/redis/redis-7000.log"
# 数据持久化
dir /opt/redis-cluster/7000
appendonly yes
appendfilename "appendonly-7000.aof"
# 集群配置
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
cluster-require-full-coverage no
# 内存管理
maxmemory 2gb
maxmemory-policy allkeys-lru
# 慢查询日志
slowlog-log-slower-than 10000
slowlog-max-len 128
# 连接限制
maxclients 10000
timeout 0
tcp-keepalive 300
# 安全配置(生产环境请务必设置)
# requirepass YourSecurePassword123!
# masterauth YourSecurePassword123!
⚠️ 配置说明:
将其中的
7000替换为当前目录对应端口号。
cluster-config-file文件由 Redis 自动生成,不要手动修改。生产环境必须配置
requirepass与masterauth密码,并设防火墙策略。
🚀 四、启动 Redis 节点
以 10.10.10.35 为例,启动两个节点:
cd /usr/bin
./redis-server /opt/redis-cluster/7000/redis.conf
./redis-server /opt/redis-cluster/7003/redis.conf
检查进程是否启动:
ps -ef | grep redis-server | grep -v grep
🔒 五、防火墙配置(重要)
在每台服务器上开放对应端口:
# Redis 服务端口
sudo firewall-cmd --permanent --add-port=7000/tcp
sudo firewall-cmd --permanent --add-port=7003/tcp
# 集群总线端口 = 服务端口 + 10000
sudo firewall-cmd --permanent --add-port=17000/tcp
sudo firewall-cmd --permanent --add-port=17003/tcp
# 重载规则
sudo firewall-cmd --reload
# 验证
sudo firewall-cmd --list-ports
🧠 六、创建集群
只需在任意一台服务器上执行以下命令:
redis-cli --cluster create \
10.10.10.35:7000 \
10.10.10.36:7001 \
10.10.10.37:7002 \
10.10.10.35:7003 \
10.10.10.36:7004 \
10.10.10.37:7005 \
--cluster-replicas 1
参数解释:
--cluster-replicas 1:每个主节点分配一个从节点命令会自动生成主从分配方案,输入
yes确认若 Redis 配置了密码,需使用:
redis-cli -a YourSecurePassword123! --cluster create ...
✅ 七、验证集群状态
查看集群状态
redis-cli -h 10.10.10.35 -p 7000 cluster info
看到:
cluster_state: ok
说明集群创建成功。
查看节点分布
redis-cli -h 10.10.10.35 -p 7000 cluster nodes
应能看到:
-
3 个 master
-
3 个 slave(每个 slave 对应一个 master)
检查集群健康
redis-cli --cluster check 10.10.10.35:7000
🧩 八、常见问题与解决方案
| 问题 | 原因 | 解决办法 |
|---|---|---|
Connection refused | 节点未启动 / 防火墙未放行 | 检查服务与端口 |
Node is not empty | 节点残留旧集群信息 | 删除 nodes.conf、AOF、RDB 文件后重启 |
Slot is already busy | 槽位冲突 | 使用 cluster reset 重置节点后重建集群 |
示例清理命令:
rm -f /opt/redis-cluster/7000/nodes-7000.conf
rm -f /opt/redis-cluster/7000/appendonly-7000.aof
rm -f /opt/redis-cluster/7000/dump.rdb
重启节点后重新执行创建命令即可。
🧭 九、运维与故障演练
检查集群健康:
redis-cli --cluster check 10.10.10.35:7000
模拟主节点故障:
pkill -f "redis-server.*7000"
此时执行:
redis-cli -h 10.10.10.35 -p 7003 cluster nodes
可看到对应从节点(7003)被自动提升为主节点。
当原主节点恢复上线后,会自动降级为从节点。
🧾 十、完整流程总结
| 阶段 | 操作 |
|---|---|
| 准备阶段 | 各节点创建目录 + 配置文件 |
| 启动节点 | 每台服务器启动两个 Redis 实例 |
| 创建集群 | 使用 redis-cli --cluster create 命令 |
| 确认方案 | 输入 yes 完成主从分配 |
| 验证状态 | 使用 cluster info 与 cluster nodes 检查 |
🎯 结语
到这里,你已经成功搭建了一套 三台服务器六节点高可用 Redis Cluster 集群。
该方案不仅实现了自动主从切换,还具备良好的扩展性和故障容错能力。
💬 建议:生产环境务必开启密码验证、防火墙策略,并定期监控节点健康。
711

被折叠的 条评论
为什么被折叠?



