一次「安全」的变更将 redis cluster 送进了孤岛
💡
原文中文,约4800字,阅读约需12分钟。
📝
内容提要
由于 Redis Cluster 配置变更,导致集群状态异常。添加内网 IP 后,Redis 无法正常读写,最终回退配置恢复正常。问题源于健康检查时强制使用第一个绑定 IP(127.0.0.1),导致节点间通信失败。建议将可通信的 IP 放在首位,并改进健康检查机制,以避免类似错误。
🎯
关键要点
- 由于 Redis Cluster 配置变更,导致集群状态异常。
- 添加内网 IP 后,Redis 无法正常读写,最终回退配置恢复正常。
- 问题源于健康检查时强制使用第一个绑定 IP(127.0.0.1),导致节点间通信失败。
- 建议将可通信的 IP 放在首位,并改进健康检查机制,以避免类似错误。
- 如果配置了监听 127.0.0.1,Redis Cluster 将尝试使用本地地址与外部节点建立链接,导致失败。
- 所有支持 Cluster 的 Redis 版本均受影响,包括不稳定分支。
❓
延伸问答
Redis Cluster 配置变更导致了什么问题?
Redis Cluster 配置变更后,集群状态异常,无法正常读写,最终需要回退配置才能恢复正常。
为什么 Redis Cluster 在健康检查时会使用第一个绑定 IP?
Redis Cluster 在健康检查时强制使用绑定配置中的第一个 IP(127.0.0.1),导致节点间通信失败。
如何避免 Redis Cluster 配置变更导致的通信失败?
建议将可通信的 IP 放在绑定配置的首位,并改进健康检查机制。
Redis Cluster 的健康检查机制是如何工作的?
Redis Cluster 通过定期判断集群状态,使用绑定的源地址进行节点间的健康检查。
所有支持 Cluster 的 Redis 版本是否都受此问题影响?
是的,所有支持 Cluster 的 Redis 版本,包括不稳定分支,都受到此问题的影响。
在初始化新的 Redis Cluster 时,配置会有什么影响?
如果在初始化时配置了监听 127.0.0.1,将导致 redis-trib.rb 工具长期阻塞,无法成功执行。
➡️