无法连接Redis集群一场失败的挣扎(无法连接redis集群)
Redis集群是由多个Redis实例构成的,可以让用户实现高可用的分布式存储,但有时候也会遇到客户端连接不上Redis集群的情况出现。这段时间,我也遇到了这样的一个场景。
两个多月前,一家客户的Redis集群连接不上,我立刻开始帮助他们解决问题。我查看了其系统架构图,发现集群中开启了哨兵模式以保证Redis集群高可用性,这是一个正常的配置。
接下来,我从根本上排查问题,在测试环境中使用Redis的客户端Ping命令测试连接,结果返回PONG,说明Redis实例正常运行。接下来查看客户端代码时,发现程序只连接了哨兵节点,并没有设置请求转发,这就是为什么连不上Redis集群的原因。
String host = sentinels.get(0).getHost();
int port = sentinels.get(0).getPort();Jedis jedis = new Jedis(host, port);
我让客户端使用Redis实例的配置信息发起连接,同时设置好转发请求,重新发布程序。结果,Redis集群可以正常连接,问题得以解决。
这次我在解决问题中学到了很多,任何问题发生都不要急于求解。当我们合理设置参数,在这之前要分析现有配置和环境,从而准确定位问题,就可以实现解决问题,而不仅仅是暴力解决问题。
相关文章