Redis
☘ 主页 > 数据库 > Redis >

Redis Cluster模式配置

2025-06-13 | 佚名 | 点击:次

分片 一、分片的本质与核心价值

‌问题根源‌
单机 Redis 存在内存容量和吞吐量瓶颈,分片通过将数据分散到多个节点解决此问题。

‌核心价值‌

二、分片实现方案对比 ‌

‌方案‌ ‌工作原理‌ ‌优点‌ ‌缺点‌ ‌适用场景‌
‌客户端分片‌ 客户端计算键的哈希值,直接路由到目标节点(如取模或一致性哈希) 无代理层,架构简单 节点变更需客户端调整,扩容复杂 小规模固定集群
‌代理分片‌ 通过中间件(如 Twemproxy)接收请求,由代理计算分片并转发 客户端无感知,屏蔽分片细节 代理层可能成为性能瓶颈 需兼容旧客户端的场景
‌服务端分片(Redis Cluster)‌ 节点间通过 Gossip 协议同步槽位信息,客户端请求由服务端重定向(MOVED 指令) 自动故障转移、支持动态扩缩容 不支持跨槽事务和多键操作 生产环境首选方案

三、分片算法详解

1. ‌范围分片(顺序分片)‌

‌

2. ‌哈希分片

3. ‌虚拟槽分片(Redis Cluster 方案)‌ ‌

四、Redis Cluster 分片实践要点

‌集群要求‌

‌数据迁移命令‌

1

2

# 将槽位 1000 从节点 A 迁移到节点 B

redis-cli --cluster reshard <节点A_IP>:<端口> --cluster-from <节点A_ID> --cluster-to <节点B_ID> --cluster-slots 1000

‌客户端交互‌

五、经典问题解析

‌为何使用 16384 槽?‌

‌分片下的限制‌

1

MSET {user:1000}.name "Alice" {user:1000}.age 30 # 使用相同 HashTag

‌总结‌:Redis 分片是分布式系统的核心技术,‌虚拟槽方案‌(Redis Cluster)凭借自动分片、故障转移和动态扩缩容能力,成为生产环境首选。设计时需关注数据均衡性、扩容成本及跨分片操作限制

Cluster模式配置

一、Cluster 核心配置参数

‌基础配置(redis.conf)‌

1

2

3

4

5

cluster-enabled yes # 启用集群模式

cluster-config-file nodes-6379.conf # 节点自动生成的集群配置文件

cluster-node-timeout 15000 # 节点失联判定时间(毫秒)

cluster-replica-validity-factor 10 # 从节点有效性因子(超时倍数)

cluster-migration-barrier 1 # 主节点最少保留的从节点数

‌网络与安全‌

1

2

3

4

bind 0.0.0.0 # 允许所有IP访问

protected-mode no # 关闭保护模式(需配合密码)

requirepass yourpassword # 集群密码(所有节点需一致)

masterauth yourpassword # 主从认证密码

集群总线端口需开放(默认:Redis端口 + 10000)。

‌数据持久化‌

1

2

appendonly yes # 开启AOF持久化

appendfsync everysec # 折衷性能与数据安全

二、集群部署全流程

1. 节点初始化

1

# 启动6个节点(3主3从) redis-server /path/to/redis-7000.conf # 端口7000-7005

2. 集群创建命令

1

2

3

4

5

redis-cli --cluster create \

192.168.1.1:7000 192.168.1.1:7001 192.168.1.1:7002 \

192.168.1.1:7003 192.168.1.1:7004 192.168.1.1:7005 \

--cluster-replicas 1 \

--cluster-yes

3. 集群验证

1

2

redis-cli -c -p 7000 cluster nodes # 查看节点角色及槽分布

redis-cli -p 7000 cluster info # 检查集群健康状态

三、关键运维操作

1. 节点扩容

1

2

3

4

# 添加新主节点

redis-cli --cluster add-node 192.168.1.2:7006 192.168.1.1:7000

# 迁移槽位(交互式)

redis-cli --cluster reshard 192.168.1.1:7000

扩容后需手动平衡槽位,避免热点问题58。

2. 故障转移模拟

1

# 手动触发主从切换(在从节点执行) redis-cli -p 7003 CLUSTER FAILOVER

3. 集群修复

1

# 修复孤儿槽(无主节点的槽) redis-cli --cluster fix 192.168.1.1:7000

四、高级配置建议

‌槽位分配优化‌

‌客户端连接策略‌

‌监控指标‌

‌指标‌ ‌监控命令‌ ‌告警阈值‌
节点状态 CLUSTER NODES 任何节点不可达
槽位覆盖率 CLUSTER INFO 的 cluster_slots_ok 必须为 16384
内存使用率 INFO MEMORY >80% 触发告警

五、常见问题解决

‌节点无法加入集群‌

‌槽位迁移卡顿‌

‌数据不一致‌

通过以上配置与运维策略,可构建高可用的 Redis Cluster 环境。实际部署时需结合监控工具(如 Prometheus)持续观察集群状态。

 各模式优缺点

一、主从复制模式

‌优点‌

‌缺点‌

二、哨兵模式(Sentinel)

‌优点‌

‌缺点‌

三、Cluster模式(分布式集群)

‌优点‌

‌缺点‌

四、对比表格

‌模式‌ ‌数据分片‌ ‌自动故障转移‌ ‌读写扩展性‌ ‌适用场景‌
主从复制 ? ? 读扩展 读多写少,容灾备份
哨兵模式 ? ?? 读扩展 高可用但数据量中等
Cluster模式 ?? ?? 读写扩展 海量数据与高并发场景
原文链接:
相关文章
最新更新