一、Redis Cluster 核心优势
1. 自动分片:数据按哈希槽(16384 slots)分布,支持动态扩容。
2. 高可用性:每个主节点至少有一个从节点,主节点故障时自动切换。
3. 去中心化:无代理层,客户端直连节点,降低延迟。
二、架构设计要点
1.
节点规划
· 最小集群:3个主节点 + 3个从节点(生产环境建议6节点起步)。
· 硬件配置:建议16GB内存+SSD硬盘,避免主从节点在同一物理机。
2.
网络优化
· 所有节点使用内网通信,降低延迟。
· 调整内核参数:net.core.somaxconn=1024, vm.overcommit_memory=1。
三、搭建步骤(以6节点为例)
1. 安装Redis(所有节点)
# 下载编译Redis(以6.2版本为例)
wget https://download.redis.io/releases/redis-6.2.12.tar.gz
tar xzf redis-6.2.12.tar.gzcd redis-6.2.12
make && make install
2. 配置文件(redis.conf)
conf
# 通用配置
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000dir /data/redis
daemonize yes
# 内存优化
maxmemory 16gb
maxmemory-policy volatile-lru
# 安全设置
requirepass your_cluster_password
masterauth your_cluster_password
3. 启动所有节点
redis-server /path/to/redis.conf
4. 创建集群
redis-cli --cluster create \ 192.168.1.101:6379 \ 192.168.1.102:6379 \ 192.168.1.103:6379 \ 192.168.1.104:6379 \ 192.168.1.105:6379 \ 192.168.1.106:6379 \ --cluster-replicas 1 \ -a your_cluster_password
5. 验证集群状态
bash
redis-cli -c -a your_cluster_password cluster nodes
四、关键优化策略
数据分片优化
· 避免大Key:单个Key值不超过1MB,集合元素数量控制在1万以内。
· 使用Hash Tag:通过{user1000}.profile强制数据分布到同一槽位。
读写分离
java
// Jedis客户端示例:从从节点读取数据JedisPoolConfig config = new JedisPoolConfig();JedisCluster cluster = new JedisCluster(
new HostAndPort("192.168.1.101", 6379),
"your_cluster_password",
config);
cluster.readonly();
# 添加新节点
redis-cli --cluster add-node 192.168.1.107:6379 192.168.1.101:6379 -a your_password
# 重新分配槽位
redis-cli --cluster reshard 192.168.1.101:6379
五、监控与运维
监控指标
· 内存使用率(used_memory)
· 每秒操作数(instantaneous_ops_per_sec)
· 集群健康状态(cluster_state)
告警配置
# 使用Prometheus+Alertmanager监控:
- alert: RedisClusterDown
expr: redis_cluster_health{state="ok"} == 0
for: 5m
六、故障处理案例
场景:主节点宕机
1. 自动切换:从节点升主(约15秒)。
2. 手动恢复:
# 查看故障节点ID
cluster nodes
# 强制故障转移
redis-cli -a your_password --cluster failover --force
七、方案对比
方案 | 优点 | 缺点 |
主从+哨兵 | 部署简单,适合中小规模 | 扩容复杂,无自动分片 |
Redis Cluster | 官方方案,自动分片+高可用 | 客户端需支持Cluster协议 |
Codis | 支持超大规模集群 | 依赖代理层,增加延迟 |
通过以上方案,可实现10万+ QPS的吞吐量,数据可用性达到99.99%。实际部署时需根据业务压力调整节点数量和硬件配置。
目前有0 条留言