目录
一、Redis 集群模式概述
(一)集群模式分类与对比
Redis 提供了三种主要的集群模式:主从模式、哨兵模式和 Cluster 模式。三种模式的发展与 Redis 版本密切相关,解决了不同阶段的分布式需求。
模式 | 支持版本 | 核心特性 | 优缺点对比 |
---|---|---|---|
主从模式 | Redis 2.8 前 | 数据多机备份、读写分离 | 优点:实现简单,解决数据备份;缺点:故障需人工处理,无法动态扩容,写操作无法负载均衡 |
哨兵模式 | Redis 2.8+ | 基于主从的自动化故障恢复 | 优点:自动故障转移;缺点:从节点故障需额外监控,存储受限于单机,不支持动态扩容 |
Cluster 模式 | Redis 3.0+ | 分布式分片、动态扩容、无中心架构 | 优点:解决存储与并发瓶颈,支持自动故障转移;缺点:架构较新,不支持多 Key 操作,客户端需缓存路由表 |
(二)Cluster 模式核心优势
- 无中心架构:节点间通过 PING-PONG 机制互联,采用 Gossip 协议同步状态,避免单点故障。
- 动态分片:通过哈希槽(Hash Slot)将数据分布到 16384 个槽中,每个主节点负责部分槽,支持动态迁移。
- 高可用性:每个主节点配备从节点,主节点故障时自动选举从节点晋升,通过 Raft 协议保证选举一致性。
- 线性扩展:可水平扩展至数千节点,官方推荐不超过 1000 个节点,满足海量数据与高并发场景。
二、数据分片机制与实现
(一)哈希槽(Hash Slot)原理
- 槽位分配:每个 Key 通过
CRC16(key) mod 16384
计算槽位,仅主节点分配槽位,从节点不参与数据读写。 - 请求路由:客户端连接任一节点,若请求槽位不在当前节点,节点返回目标节点地址,客户端自动重定向(MOVED 命令)。
(二)分片方式对比
类型 | 实现原理 | 代表工具 | 优缺点 |
---|---|---|---|
客户端分片 | 业务代码内置路由规则,直接访问 Redis 实例 | 无主流开源工具 | 优点:无中间层,性能高;缺点:运维复杂,依赖研发能力,不适合中小团队 |
代理分片 | 通过代理层转发请求,屏蔽后端细节 | Twemproxy、Codis | 优点:业务透明,维护方便;缺点:引入代理层,性能损耗约 20%(Twemproxy) |
服务器端分片 | Redis 原生支持,节点自动管理槽位与迁移 | Redis-Cluster | 优点:集成度高,自动负载均衡;缺点:客户端需处理路由,不支持跨槽多 Key 操作 |
1. Twemproxy 代理分片
- 架构特点:单点代理,需搭配 Keepalived 实现高可用,路由配置静态,不支持动态扩容。
- 性能影响:实测读写性能下降约 20%,适合对性能要求不极致的场景。
2. Codis 代理分片
- 核心改进:引入 Group 概念(主从组),支持热迁移(Auto Rebalance),通过 Dashboard 可视化管理。
- 槽位管理:预分片 1024 个槽位,存储于 ZooKeeper,支持动态调整,性能优于 Twemproxy。
(三)服务器端分片核心命令
- 槽位分配:
# 手动分配槽位(例:分配槽 0-5460 到节点 A)
redis-cli -h <node-ip> -p <port> CLUSTER ADDSLOTS {0..5460}
- 自动均衡槽位:
# 重新均衡所有节点槽位(自动分配 16384 个槽)
redis-cli --cluster rebalance --cluster-threshold 1 <任意节点地址>
三、负载均衡与故障处理
(一)负载均衡实现机制
- 客户端路由:根据 Key 计算槽位,直接连接目标节点,避免代理层转发。
- 自动迁移:节点加入 / 离开时,系统自动迁移槽位数据,保持均衡。
# 查看节点槽位分布
redis-cli -h <node-ip> -p <port> cluster nodes | grep "slots"
- 故障转移:主节点故障时,从节点通过 Raft 协议选举新主,流程如下:
- 从节点广播
CLUSTERMSG_TYPE_FAILOVER_AUTH_REQUEST
请求投票。 - 主节点收到请求后,未投票则返回
CLUSTERMSG_TYPE_FAILOVER_AUTH_ACK
。 - 从节点收集 >= N/2+1 票(N 为主节点数)即当选新主。
- 从节点广播
(二)故障处理命令
- 手动触发故障转移:
# 在从节点执行,强制提升为新主(原主节点需已下线)
redis-cli -h <slave-ip> -p <port> cluster failover
- 查看节点状态:
# 检查集群健康状态
redis-cli --cluster check <任意节点地址>
四、Redis Cluster 部署实战
(一)环境规划
角色 | 主机名 | IP 地址 | 配置 | 端口 |
---|---|---|---|---|
主节点 1 | master1 | 192.168.10.101 | 2C4G | 6379 |
主节点 2 | master2 | 192.168.10.102 | 2C4G | 6379 |
主节点 3 | master3 | 192.168.10.103 | 2C4G | 6379 |
从节点 1 | slave1 | 192.168.10.104 | 2C4G | 6379 |
从节点 2 | slave2 | 192.168.10.105 | 2C4G | 6379 |
从节点 3 | slave3 | 192.168.10.106 | 2C4G | 6379 |
(二)部署步骤
1. 安装 Redis(所有节点)
# 关闭防火墙与 SELinux
systemctl stop firewalld
setenforce 0
# 安装依赖
dnf -y install gcc zlib-devel tar
# 编译安装(以 Redis 5.0.14 为例)
tar xvzf redis-5.0.14.tar.gz
cd redis-5.0.14
make
make PREFIX=/usr/local/redis install
# 创建软链接
ln -s /usr/local/redis/bin/* /usr/local/bin/
# 运行安装脚本(生成配置文件)
cd utils
./install_server.sh
2. 修改配置文件(所有节点)
vim /etc/redis/6379.conf
关键配置项:
bind 0.0.0.0 # 监听所有 IP
port 6379 # 端口
daemonize yes # 守护进程模式
cluster-enabled yes # 启用集群
cluster-config-file nodes-6379.conf # 集群配置文件(自动生成)
cluster-node-timeout 15000 # 节点超时时间(ms)
cluster-require-full-coverage no # 允许部分槽不可用
appendonly yes # 开启 AOF 持久化
3. 启动 Redis 服务
# 重启服务
/etc/init.d/redis_6379 restart
# 验证端口监听(6379 为数据端口,16379 为集群端口)
netstat -anpt | grep 6379
4. 创建集群
# --cluster-replicas 1 表示每个主节点配 1 个从节点
redis-cli --cluster create \
192.168.10.101:6379 192.168.10.102:6379 192.168.10.103:6379 \
192.168.10.104:6379 192.168.10.105:6379 192.168.10.106:6379 \
--cluster-replicas 1
提示:输入 yes
确认配置,等待节点互联完成。
5. 测试集群
# 连接任意节点(-c 开启集群模式)
redis-cli -h 192.168.10.101 -p 6379 -c
# 写入数据(自动路由至目标节点)
192.168.10.101:6379> set key1 value1
-> Redirected to slot [15495] located at 192.168.10.103:6379
OK
# 从另一节点读取
192.168.10.102:6379> get key1
"value1"
6. 集群管理命令
查看集群节点:
redis-cli -h <node-ip> -p <port> cluster nodes
添加节点(主节点):
# 新节点 IP:192.168.10.107 redis-cli --cluster add-node 192.168.10.107:6379 192.168.10.101:6379
添加从节点:
# 将 192.168.10.108 设为 192.168.10.107 的从节点 redis-cli -h 192.168.10.108 -p 6379 cluster replicate <master-node-id>
删除节点:
# 1. 清空节点数据 redis-cli -h 192.168.10.108 -p 6379 flushall redis-cli -h 192.168.10.108 -p 6379 cluster reset # 2. 从集群中删除节点(需获取节点 ID) redis-cli --cluster del-node 192.168.10.108:6379 <node-id>
五、常见故障与排错
(一)故障 1:Slot 已被占用
- 错误信息:
ERR Slot 0 is already busy
- 原因:旧集群配置或数据残留。
- 解决方案:
# 登录所有节点执行 redis-cli flushall redis-cli cluster reset rm -f /var/lib/redis/6379/nodes-6379.conf # 删除集群配置文件 systemctl restart redis_6379 # 重启服务
(二)故障 2:节点无法加入集群
- 原因:配置文件监听
127.0.0.1
,导致节点间无法互联。 - 解决方案:
# 确保配置文件中 bind 为 0.0.0.0,重启后使用绝对路径启动 redis-server /etc/redis/6379.conf
(三)故障 3:从节点无法自动故障转移
- 原因:未开启从节点只读模式,或客户端未配置读取从节点。
- 解决方案:
# 从节点执行(允许读取) redis-cli -h <slave-ip> -p <port> config set slave-read-only yes
六、最佳实践与注意事项
拓扑设计:
- 主节点数 ≥3,满足半数投票机制;从节点数 ≥1,建议与主节点同机房部署。
- 避免单机房故障,可跨机房部署主从节点。
容量规划:
- 单个节点内存建议 ≤10GB,避免大 Key 导致迁移卡顿;槽位均匀分配,预留 30% 扩容空间。
客户端配置:
- 使用支持 Redis Cluster 的客户端(如 Jedis、Lettuce),开启自动重定向(MOVED 命令处理)。
- 缓存路由表,减少 CLUSTER SLOTS 命令调用频率。
监控与告警:
- 监控指标:节点状态(UP/DOWN)、内存使用率、网络延迟、槽位分布、主从复制延迟。
- 告警规则:主节点故障、槽位覆盖不足、内存使用率超过 80%。
七、Redis Cluster 高级特性解析
(一)Gossip 协议与节点通信
- 协议作用:集群节点通过 Gossip 协议交换节点状态、槽位分配等信息,确保集群状态最终一致。
- 通信机制:
- PING-PONG 消息:节点定期向其他节点发送 PING 消息,包含自身及已知节点状态。
- 故障检测:若节点在
cluster-node-timeout
时间内未响应,其他节点标记其为疑似下线(PFAIL);当半数以上主节点认为其下线时,标记为已下线(FAIL)。
- 命令验证:
# 查看节点Gossip协议配置 redis-cli -h <node-ip> -p <port> config get cluster-node-timeout
(二)数据持久化与集群兼容性
- RDB 与 AOF:
- 主节点同时支持 RDB 和 AOF 持久化,从节点通过复制主节点数据实现持久化。
- 建议开启 AOF(
appendonly yes
),避免 RDB 全量同步对集群性能的影响。
- 注意事项:
- 集群模式下仅支持 0 号数据库(
select
命令无效),需通过业务层区分数据空间。 - 持久化文件需定期备份,避免节点故障后因数据丢失导致集群重建失败。
- 集群模式下仅支持 0 号数据库(
(三)跨数据中心(多机房)部署
- 拓扑方案:
- 主 - 主跨机房:需配合外部一致性方案(如分布式锁),避免脑裂。
- 主 - 从跨机房:主节点集中在一个机房,从节点分布在其他机房,提升容灾能力。
- 挑战与应对:
- 网络延迟:Gossip 协议在跨机房场景下可能因延迟导致状态同步滞后,需增大
cluster-node-timeout
(建议≥5000ms)。 - 故障转移:跨机房故障时,优先选举同机房从节点为主,减少跨机房流量。
- 网络延迟:Gossip 协议在跨机房场景下可能因延迟导致状态同步滞后,需增大
八、运维实战:扩缩容与数据迁移
(一)集群扩容(添加主从节点)
新增主节点:
# 1. 部署新节点(配置同现有节点,确保cluster-enabled=yes) # 2. 加入集群(作为主节点) redis-cli --cluster add-node 192.168.10.107:6379 192.168.10.101:6379 # 3. 分配槽位(自动均衡) redis-cli --cluster rebalance --cluster-threshold 1 192.168.10.101:6379
为新主节点添加从节点:
# 1. 部署新从节点(配置同主节点) # 2. 指向主节点 redis-cli -h 192.168.10.108 -p 6379 cluster replicate <new-master-node-id>
(二)集群缩容(删除主节点)
迁移主节点槽位:
# 将旧主节点槽位迁移至其他主节点(例:迁移所有槽位到 192.168.10.101) redis-cli --cluster reshard --from <old-master-id> --to <new-master-id> --slots 16384 192.168.10.101:6379
删除主节点:
# 1. 清空节点数据并重置集群状态 redis-cli -h 192.168.10.103 -p 6379 flushall redis-cli -h 192.168.10.103 -p 6379 cluster reset # 2. 从集群中删除节点 redis-cli --cluster del-node 192.168.10.103:6379 <old-master-id>
(三)数据迁移最佳实践
- 在线迁移:使用
redis-cli --cluster reshard
命令,支持平滑迁移数据,无需停机。 - 流量控制:通过
--cluster-threshold
参数限制单次迁移数据量(默认 1GB),避免影响线上业务。 - 监控迁移进度:
# 查看迁移状态(在目标节点执行) redis-cli -h <node-ip> -p <port> cluster nodes | grep "moving"
九、性能优化与参数调优
(一)核心参数配置
参数 | 默认值 | 优化建议 | 场景说明 |
---|---|---|---|
cluster-node-timeout |
15000ms | 高延迟网络环境可设为 20000-30000ms | 跨机房部署时避免误判节点故障 |
tcp-keepalive |
300s | 设为 60s | 保持长连接活性,减少 TCP 断开重连 |
hz |
10 | 高负载场景设为 20-100 | 提高节点心跳频率,优化故障检测灵敏度 |
repl-backlog-size |
1MB | 设为 1024MB(根据主从复制延迟调整) | 避免复制积压导致全量同步 |
(二)客户端性能优化
- 连接池管理:
- 使用连接池(如 Jedis Pool)复用连接,减少 TCP 握手开销。
- 配置
maxRedirects
参数(建议≤5),限制单次请求的最大重定向次数。
- 批量操作:
- 避免跨槽位的
MGET
/MSET
操作,可通过HASH
结构将相关 Key 存入同一槽位。 - 对同槽位 Key 使用
Pipeline
批量执行命令,减少网络往返次数。
- 避免跨槽位的
(三)硬件与系统优化
- CPU 绑定:将 Redis 进程绑定至特定 CPU 核心,避免上下文切换(通过
taskset
命令)。 - 内存优化:
- 禁用透明大页(THP):
echo never > /sys/kernel/mm/transparent_hugepage/enabled
- 使用 jemalloc 内存分配器(Redis 默认使用),减少内存碎片。
- 禁用透明大页(THP):
- 网络调优:
- 增大套接字缓冲区:
sysctl -w net.core.socket_buffer_size="214944256 214944256 214944256"
- 开启 TCP 快速回收:
sysctl -w net.ipv4.tcp_tw_recycle=1
- 增大套接字缓冲区:
十、监控与告警体系搭建
(一)关键监控指标
类别 | 指标名称 | 阈值建议 | 采集方式 |
---|---|---|---|
节点状态 | 节点在线数(UP 节点比例) | ≥90% | redis-cli cluster nodes |
主从复制延迟(master_repl_offset) | < 100KB | info replication |
|
性能 | QPS/TPS | 低于节点最大处理能力 80% | redis-cli info stats |
内存使用率(used_memory_rss) | < 80% 物理内存 | redis-cli info memory |
|
集群健康 | 槽位覆盖率(covered_slots) | 100% | redis-cli --cluster check |
故障转移耗时(failover_time) | < 30s | 监控cluster-require-full-coverage 状态 |
(二)告警规则示例
- 主节点故障:当 UP 主节点数 < 50% 时触发紧急告警,需人工介入恢复。
- 内存告警:单个节点内存使用率 > 85% 时触发扩容提示。
- 槽位失衡:单个主节点负责槽位数 > 16384/N + 10%(N 为主节点数)时触发重新均衡。
(三)监控工具推荐
Prometheus + Grafana:
- 通过
redis_exporter
采集指标,Grafana 展示集群拓扑与性能趋势。 - 示例查询语句:
promql
# 主节点在线率 sum(redis_cluster_nodes{role="master", status="online"}) / count(redis_cluster_nodes{role="master"})
- 通过
RedisInsight:
- 官方可视化工具,支持实时监控、慢查询分析及集群管理。
十一、典型场景与解决方案
(一)高并发读场景
- 方案:
- 增加从节点数量,开启从节点只读模式(
slave-read-only yes
)。 - 客户端路由至从节点读取数据,减轻主节点压力。
- 增加从节点数量,开启从节点只读模式(
- 命令验证:
# 从节点执行,允许读取 redis-cli -h <slave-ip> -p <port> config set slave-read-only yes
(二)大 Key 问题处理
- 检测大 Key:
# 扫描所有Key(生产环境建议使用--pattern过滤) redis-cli --bigkeys -h <node-ip> -p <port>
- 优化策略:
- 拆分大 Key 为多个小 Key(如将大 Hash 拆分为子 Hash)。
- 使用
冷热数据分离
,热数据保留在内存,冷数据持久化至磁盘或云存储。
(三)跨集群数据同步
- 方案对比:
方式 工具 特点 异步复制 Redis Replication 低延迟,支持主从 / 主主模式,但可能丢失少量数据 同步双写 业务层实现 强一致性,性能损耗高,适合金融场景 数据管道 Kafka + ETL 适合海量数据离线同步,支持复杂转换逻辑
十二、分片
(一)确定扩张需求与规划
在着手分片扩张前,务必对业务需求展开深度剖析。先精准监测现有集群的关键指标,如内存使用率、QPS(每秒查询率)、TPS(每秒事务处理量)等,以此洞察集群当前的负载状况与性能瓶颈。若内存使用率长期居高不下,逼近甚至超出警戒阈值,或是 QPS、TPS 已达现有集群处理能力的极限,严重影响业务响应速度,那就清晰释放出急需扩容的信号。
依据监测数据与业务未来的增长预估,精心规划扩张规模。举例来说,若预估未来半年内数据量将激增 50%,那就得依据 Redis Cluster 单个节点的承载能力,科学合理地确定新增节点的数量与配置。与此同时,还得兼顾网络拓扑结构,确保新增节点接入后,网络延迟、带宽等不会成为新的性能制约因素。
(二)新增节点的部署与加入
- 环境准备与软件安装:
- 在新增节点的服务器上,细致检查并确保硬件资源(CPU、内存、磁盘、网络等)充裕。关闭防火墙或精准配置防火墙规则,放行 Redis 数据端口(默认为 6379)与集群总线端口(默认为 16379),保障节点间通信顺畅无阻。
- 安装 Redis 软件,可从 Redis 官方网站下载契合的版本(建议采用稳定版)。以 Redis 6.2.6 为例,解压安装包后,执行
make
与make install
命令完成编译与安装,期间留意编译过程有无报错信息。
- 配置文件调整:
- 复制一份 Redis 默认配置文件(如
redis.conf
),并依据集群需求细致修改关键配置项。开启集群模式,将cluster-enabled
设为yes
;设定集群配置文件路径,如cluster-config-file nodes.conf
,此文件会自动记录集群节点信息与状态;合理设置cluster-node-timeout
,一般设为 15000 毫秒(15 秒),该参数决定了节点在被认定为故障前的最长无响应时间,可依据网络状况适度调整。 - 配置持久化模式,若业务对数据持久性要求严苛,建议开启 AOF(Append - Only - File)持久化,将
appendonly
设为yes
,并按需调整appendfsync
策略,如采用everysec
每秒同步一次数据,在性能与数据安全间寻得平衡。
- 复制一份 Redis 默认配置文件(如
- 启动新节点与加入集群:
- 运用
redis-server
命令启动新节点,指定配置文件路径,如redis-server /path/to/redis.conf
。通过ps -ef | grep redis
命令确认进程已成功启动,或查看日志文件(默认路径为/var/log/redis/redis.log
),检查有无异常报错。 - 使用
redis-cli --cluster add-node
命令,将新节点加入现有集群。命令格式为redis-cli --cluster add-node <new - node - ip:port> <existing - node - ip:port>
,其中<new - node - ip:port>
是新增节点的 IP 地址与端口,<existing - node - ip:port>
是现有集群中任一节点的 IP 地址与端口,该节点充当新节点加入集群的 “引路人”。执行命令后,耐心等待新节点与集群内其他节点完成握手与状态同步。 - 新节点加入后,初始状态下它不会分配到任何哈希槽,也无数据存储,需后续执行槽位迁移操作,使其承担起数据存储与处理的职责。
- 运用
(三)槽位迁移与数据均衡
- 确定迁移方案与源目标节点:
- 槽位迁移旨在将现有节点上的部分哈希槽及对应数据,迁移至新增节点,达成集群内数据的重新均衡分布。可借助
redis-cli --cluster reshard
命令开启迁移流程。执行该命令时,需明确指定源节点(数据迁出的节点)与目标节点(数据迁入的新增节点)。 - 为保障集群在迁移过程中的性能稳定,尽量挑选负载相对较低的时间段执行迁移操作,比如业务低峰期。同时,可根据节点的硬件配置、当前负载状况,合理规划每个源节点迁移至目标节点的槽位数。通常情况下,建议平均分配槽位,避免单个源节点迁移数据量过大,对业务造成冲击。
- 槽位迁移旨在将现有节点上的部分哈希槽及对应数据,迁移至新增节点,达成集群内数据的重新均衡分布。可借助
- 执行槽位迁移操作:
- 执行
redis-cli --cluster reshard
命令后,命令行将进入交互模式,系统会依次询问多个关键信息:- 输入要迁移的槽位数,可依据前期规划,输入具体数值,若想从多个源节点均匀抽取槽位,也可输入
all
,让系统自动计算并分配。 - 输入源节点 ID,可通过
redis-cli -h <node - ip> -p <port> cluster nodes
命令查看集群内各节点 ID,多个源节点 ID 之间用空格隔开。 - 输入目标节点 ID,即新增节点的 ID。
- 输入要迁移的槽位数,可依据前期规划,输入具体数值,若想从多个源节点均匀抽取槽位,也可输入
- 输入完上述信息并确认无误后,输入
yes
,正式启动槽位迁移。迁移进程中,redis-cli
工具会在源节点与目标节点间,逐键迁移数据,并实时更新集群内各节点的槽位映射关系。 - 密切关注迁移进度,可通过
redis-cli -h <source - node - ip> -p <source - node - port> cluster nodes
命令,在源节点上查看迁移状态。若看到类似"slot <slot - number> moving <target - node - ip>:<target - node - port>"
的信息,表明对应槽位正在迁移中;若迁移完成,该槽位信息会从源节点移除,并出现在目标节点的槽位列表中。
- 执行
- 数据一致性与完整性校验:
- 槽位迁移完成后,为确保数据的一致性与完整性,可对集群执行全面校验。使用
redis-cli --cluster check <any - node - ip:port>
命令,检查集群内各节点的槽位分配是否正确、数据是否完整。该命令会遍历集群所有节点,对比各节点存储的数据与槽位映射关系,若发现不一致或缺失数据的情况,及时排查并修复。 - 针对重要业务数据,还可通过编写自定义脚本,在源节点与目标节点上对比特定 Key - Value 对,进一步确认数据迁移的准确性。比如,对电商业务中的商品库存数据、用户订单数据等关键信息,进行逐行比对,保障迁移后数据的可用性与业务逻辑的正确性。
- 槽位迁移完成后,为确保数据的一致性与完整性,可对集群执行全面校验。使用
(四)验证与优化
- 集群状态与性能验证:
- 借助
redis-cli --cluster check
命令,再次全面检查集群状态,确保所有节点状态正常,槽位分配均匀合理,无节点失联、槽位未覆盖等异常状况。查看命令输出结果中的cluster state
字段,应为ok
,且reachable nodes
数量应与集群内实际节点数量一致。 - 使用性能测试工具,如
redis - bench - mark
,对集群在扩容后的性能展开全方位测试。模拟真实业务场景,设置合适的并发数、请求数,测试集群的读写性能。对比扩容前后的测试数据,观察 QPS、响应时间等关键指标的变化,评估扩容效果是否达到预期。若性能未达理想状态,深入分析原因,可能涉及网络配置、节点资源瓶颈、客户端连接池设置等多方面因素。
- 借助
- 客户端适配与优化:
- 若客户端采用了缓存路由表(如 Jedis、Lettuce 等 Redis 客户端库),需确保客户端能及时感知集群拓扑结构的变化,更新路由信息。部分客户端支持自动重定向功能(依据 Redis 返回的
MOVED
或ASK
命令),可通过配置开启该功能,保障客户端请求能准确路由至目标节点。 - 优化客户端连接池配置,根据集群扩容后的节点数量与负载情况,合理调整连接池的最大连接数、最小空闲连接数等参数。避免连接池过小导致连接不足,影响业务并发处理能力;同时防止连接池过大,占用过多系统资源,引发资源竞争与性能下降。
- 若客户端采用了缓存路由表(如 Jedis、Lettuce 等 Redis 客户端库),需确保客户端能及时感知集群拓扑结构的变化,更新路由信息。部分客户端支持自动重定向功能(依据 Redis 返回的
- 监控与预警体系更新:
- 将新增节点纳入集群监控体系,使用 Prometheus、Grafana 等监控工具,实时采集新增节点的关键指标,如 CPU 使用率、内存使用率、网络流量、命令执行速率等。在 Grafana 中,创建针对新增节点的监控面板,直观展示节点运行状态,便于及时发现潜在问题。
- 更新预警规则,依据新增节点的性能指标与集群整体状况,重新设定合理的预警阈值。例如,内存使用率超过 80%、CPU 使用率持续高于 90% 等情况触发预警,以便运维人员在问题恶化前介入处理,保障集群稳定运行。