“Bad response from node”错误主因是集群总线端口16379不通,因其专用于节点间Gossip通信(握手、心跳、故障检测等),而6379仅处理客户端请求;需从其他节点执行redis-cli -h IP -p 16379 ping验证连通性,并检查防火墙、bind、cluster-enabled及时间同步等配置。

cluster nodes 显示 fail 或 noaddr,先查 16379 端口通不通
集群节点“失联”但单个节点仍能连上,大概率是集群总线端口被拦了。Redis 集群节点之间靠 16379(默认 = 客户端端口 + 10000)传心跳和槽位信息,这个端口不走业务流量,容易被忽略。
- 在任一节点执行
redis-cli -p 6379 cluster nodes,找到异常节点的 IP,比如192.168.5.20:6379 - 立刻测试其总线端口:
telnet 192.168.5.20 16379(Linux/macOS)或Test-NetConnection 192.168.5.20 -Port 16379(Windows) - 若不通,检查本机防火墙:
sudo iptables -L INPUT -n | grep 16379;没结果就加规则:sudo iptables -I INPUT -p tcp --dport 16379 -j ACCEPT - 云环境(阿里云、AWS 等)必须同步放开安全组入方向规则,源地址填其他所有集群节点 IP,不能只开
6379
redis-cli cluster nodes 返回 127.0.0.1,说明 cluster-announce-ip 没配对
客户端拿到 127.0.0.1:6379 就会连自己本地,必然失败。这不是网络问题,是节点广播了错误地址。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 每个节点 redis.conf 必须显式配置三组参数:
cluster-announce-ip(填真实内网 IP)、cluster-announce-port(通常 6379)、cluster-announce-bus-port(通常 16379) -
cluster-announce-ip不能写0.0.0.0或留空,也不能是127.0.0.1 - 改完必须执行
redis-cli -p 6379 cluster reset hard并重启 Redis 进程,仅config rewrite不生效 - 验证方式:
redis-cli -c -h $node_ip -p 6379 cluster nodes,输出里所有节点 IP 应为真实内网地址
频繁报 MOVED/ASK 但连接卡住,检查客户端是否真走集群模式
Lettuce(Spring Boot 默认)若没正确识别集群拓扑,就会反复重定向失败,看起来像断连。
- 确认配置用了
spring.redis.cluster.nodes,而不是spring.redis.host - 连接字符串不能是单点形式,比如
redis://127.0.0.1:6379—— 这会让 Lettuce 自动降级为单机模式 - 禁用
spring.redis.ssl=true,除非集群所有节点都配了 TLS,否则握手失败后会不断重试触发重定向循环 - 快速验证:用
redis-cli -c -h $proxy_ip -p 6379 ping,如果也卡或报错,说明集群拓扑本身就有问题,不是应用层锅
从节点反复 reload 数据,观察 INFO MEMORY 的 used_memory_peak_perc
从节点日志出现 Redis is loading the dataset in memory,且 used_memory_peak_perc 从低值一路涨到接近 100%,说明它正在反复全量同步 —— 主从链路不稳定或配置太激进。
- 检查主节点
bgsave耗时:执行redis-cli -p 6379 slowlog get 10,看是否有长时间阻塞的 RDB 生成 - 调大
repl-timeout至120或180秒(默认 60),避免短暂丢包就断连 - 增大
repl-backlog-size到268435456(256MB),防止断连恢复时偏移量差距太大,被迫再次全量同步 - 启用
tcp-keepalive并设为60,避免中间设备(如 SLB、NAT 网关)清理空闲连接
cluster-announce-ip 是否填对、以及从节点是否陷入“同步 → 超时 → 重连 → 再同步”的死循环。这三个地方漏掉任何一个,排查都会绕远路。

















