Redis 集群实战部署方案(超详细全流程)

Redis 在单机模式下虽然性能强劲,但无法满足高并发、高可用与数据分片存储的需求。
因此在生产环境中,Redis 集群(Redis Cluster) 是主流部署方式。
本文将系统介绍如何从零搭建 Redis 集群,并讲清楚每一步背后的原理。


🧭 目录


一、Redis 集群模式概述

🔹 传统主从(Master-Slave)

  • 一主多从
  • 从节点仅用于读操作
  • 不支持自动故障转移(需 Sentinel)

🔹 Redis Cluster 模式(推荐)

  • 分布式数据分片(slot 机制)
  • 自动故障转移
  • 无中心节点(去中心化)
  • 支持 16384 个哈希槽(hash slot)

📊 优势

特性单机主从Cluster
高可用
自动故障转移✅(Sentinel)
数据分片
水平扩展

二、集群架构设计

🚀 推荐架构:6 节点集群(3主3从)

节点角色端口IP
redis-7001Master17001192.168.10.101
redis-7002Master27002192.168.10.102
redis-7003Master37003192.168.10.103
redis-7004Slave17004192.168.10.101
redis-7005Slave27005192.168.10.102
redis-7006Slave37006192.168.10.103

特点:

  • 每个主节点对应一个从节点
  • 主节点分摊 16384 个哈希槽
  • 任意节点挂掉都可自动切换

三、环境准备

🔧 系统环境

CentOS 7
Redis 6.x / 7.x
GCC / make 已安装

📁 目录结构

/usr/local/redis-cluster/
├── 7001/redis.conf
├── 7002/redis.conf
├── 7003/redis.conf
├── 7004/redis.conf
├── 7005/redis.conf
└── 7006/redis.conf

四、配置文件详解

示例:7001/redis.conf

# 基础配置
port 7001
bind 0.0.0.0
daemonize yes
protected-mode no
pidfile /var/run/redis_7001.pid
logfile "/usr/local/redis-cluster/7001/redis.log"
dir /usr/local/redis-cluster/7001

# 集群配置
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000

# 持久化配置
appendonly yes
appendfilename "appendonly.aof"

其他节点只需修改 portdir


五、启动集群节点

依次启动 6 个 Redis 实例:

redis-server /usr/local/redis-cluster/7001/redis.conf
redis-server /usr/local/redis-cluster/7002/redis.conf
redis-server /usr/local/redis-cluster/7003/redis.conf
redis-server /usr/local/redis-cluster/7004/redis.conf
redis-server /usr/local/redis-cluster/7005/redis.conf
redis-server /usr/local/redis-cluster/7006/redis.conf

查看进程:

ps -ef | grep redis

六、创建集群

Redis 5.0+ 以后可直接使用官方命令行工具:

redis-cli --cluster create \
  192.168.10.101:7001 \
  192.168.10.102:7002 \
  192.168.10.103:7003 \
  192.168.10.101:7004 \
  192.168.10.102:7005 \
  192.168.10.103:7006 \
  --cluster-replicas 1

解释:

  • --cluster-replicas 1 表示每个主节点分配一个从节点

输出确认:

>>> Performing hash slots allocation on 6 nodes...
>>> Adding replica 192.168.10.101:7004 to 192.168.10.101:7001
...
[OK] All 16384 slots covered.

七、集群验证与常用命令

进入任意节点验证:

redis-cli -c -p 7001

查看集群信息:

cluster info
cluster nodes

测试写入:

set name simon
get name

Redis 会自动重定向到对应的 slot:

-> Redirected to slot [5478] located at 192.168.10.102:7002

八、主从切换与扩容缩容

🔁 手动切换主从

redis-cli -p 7004 cluster failover

该命令会使 7004 从节点提升为主节点。

➕ 扩容节点

  1. 启动新节点(7007)

  2. 加入集群:

    redis-cli --cluster add-node 192.168.10.101:7007 192.168.10.101:7001
    
  3. 重新分配 slot:

    redis-cli --cluster reshard 192.168.10.101:7001
    

➖ 缩容节点

redis-cli --cluster del-node 192.168.10.101:7007 node-id

九、故障转移与高可用机制

Redis Cluster 内置 自动故障检测与选举机制

  1. 主节点宕机后,其从节点会发起投票;
  2. 过半节点同意后,从节点升级为新的主节点;
  3. 故障节点恢复后,会自动变为从节点重新加入集群。

可通过以下命令观察状态:

cluster info
cluster nodes

十、运维建议与性能优化

✅ 内存优化

  • 开启持久化压缩:

    rdbcompression yes
    
  • 限制最大内存:

    maxmemory 2gb
    maxmemory-policy allkeys-lru
    

✅ 监控与告警

  • 使用 INFO 命令或 redis_exporter 监控指标
  • 接入 Prometheus + Grafana 可视化监控

✅ 安全加固

  • 设置密码:

    requirepass yourPassword
    masterauth yourPassword
    
  • 限制绑定 IP:bind 127.0.0.1

  • 禁用危险命令:

    rename-command FLUSHALL ""
    rename-command FLUSHDB ""
    

✅ 集群管理命令汇总

cluster nodes             # 查看节点信息
cluster slots             # 查看槽分配情况
cluster keyslot key       # 查看 key 属于哪个槽
cluster replicate node-id # 设置主从关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光芒万丈向远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值