我是靠谱客的博主 细心猎豹,最近开发中收集的这篇文章主要介绍Redisson类报错:ClusterConnectionManager [ERROR] Can't connect to master: redis://127.0.0.1:7000,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

依旧是原程序使用新的redis集群后发现的问题。
调用redis插入数据的api是使用正常的,一旦调用Redisson类,就会报错如下:

  • 2019-04-30 10:01:22.242 o.r.c.ClusterConnectionManager [ERROR] Can’t connect to master: redis://127.0.0.1:7000 with slot ranges: [[0-5461]]
  • 2019-04-30 10:01:22.242 o.r.c.ClusterConnectionManager [ERROR] Can’t connect to master: redis://127.0.0.1:7001 with slot ranges: [[5462-10922]]
  • 2019-04-30 10:01:22.247 o.r.c.ClusterConnectionManager [ERROR] Can’t connect to master: redis://127.0.0.1:7002 with slot ranges: [[10923-16383]]
  • 2019-04-30 10:01:22.259 o.r.c.h.CommandsQueue [ERROR] Exception occured. Channel: [id: 0xe9281f53, 0.0.0.0/0.0.0.0:53002 :> /10.153.73.131:7000]
  • java.lang.IllegalStateException: cannot be started once stopped
  • 2019-04-30 10:02:13.445 o.a.s.util [ERROR] Received error in main thread… terminating server…
    java.lang.ExceptionInInitializerError
  • Caused by: org.redisson.client.RedisConnectionException: Can’t connect to servers!
  • Caused by: java.net.ConnectException: Connection refused: /127.0.0.1:7002

经过分析,问题主要集中在 Can’t connect to master: redis://127.0.0.1:7000上面,
因为明显应该连接redis对应的集群ip,才能connect连接成功。
但是很明显,是创建redis连接刚开始是成功的,否则是无法读取到master信息。
所以到底是哪里,redis的ip地址变成127.0.0.1的呢。

研究发现,RedissonClient的模式有很多种,其中包括集群模式和主从模式,这两种模式都适用于redis的集群环境拿到客户端。(参考:https://aperise.iteye.com/blog/2396196
我的代码使用的集群方式,拿到的Redisson客户端api入口。

public static RedissonClient getInstance(){
		Config config = new Config();
		config.useClusterServers()
		    .addNodeAddress(Constant.REDIS_PTAH.split(","))
		    .setMasterConnectionMinimumIdleSize(10)
		    .setMasterConnectionPoolSize(64)
		    .setSlaveConnectionMinimumIdleSize(10)
		    .setSlaveConnectionPoolSize(64);
		RedissonClient redisson = Redisson.create(config);
		return redisson;
	}

该模式会自动识别redis的集群的主从,经过判断,源码必定会读取redis的配置文件。
(因为查看addNodeAddress方法的源码,发现有切割ip增加 redis://的相关逻辑。猜测毕竟还有类似的逻辑,重新切割ip host 拼接)
于是查看了redis集群主从的配置文件。果然发现,里面的ip使用的127.0.0.1.
在这里插入图片描述
迅速联系了运维,将127.0.0.1改成该节点的实际ip。bug解决。

最后

以上就是细心猎豹为你收集整理的Redisson类报错:ClusterConnectionManager [ERROR] Can't connect to master: redis://127.0.0.1:7000的全部内容,希望文章能够帮你解决Redisson类报错:ClusterConnectionManager [ERROR] Can't connect to master: redis://127.0.0.1:7000所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部