JedisConnectionException: java.net.ConnectException: Connection refused:

今天搭建rediscluster集群,本想在代码中测试下,结果jedisCluster连接redisCluster时  报:JedisConnectionException: java.net.ConnectException: Connection refused: 

起初以为是网络不通,经过ping 、telnet 测试连接发现是可以调通的,后来登服务器查了rediscluster包下的node.conf 发现是自己搭建集群时落下的坑,创建cluster节点时我是直接用的127.0.0.1,在客户端调用时由于代码运行程序和redis不在同一台主机,所以就连接失败了。

我的解决方案:直接修改nodes.conf文件里的ip  即:127.0.0.1 给修改成主机真实ip地址:

搭建cluster集群模式三主三从,注意其中有有一个细节(我偷懒只修改7001下的node.conf,然后直接将配置文件cp到其他节点了),进入redis客户端get key时会出现出现如下图的问题:

这个是什么问题呢 ,由于之前redis中是有数据的,通过cluster集群的模式往里插数据会根据slot(0~16383)个数16384来取模,set时候这个key通过计算是落在7003上的,所以我在get key的时候会到7003上获取value。于是我检查了7003节点下的nodes.conf中描述的slot取值范围,查看了7003对应的节点发现,myself 还是7001(原因就是这个node.conf文件就是从7001copy到7003包下的),于是cluster就找不到7003主节点。可是还有7003对应的从节点啊,因为cluster集群是高可用的嘛,然而 7003对应 从节点也就是 7006分到的slot范围是错误的(这个分片取值规则以后研究),所以也是获取不到value,如上图虽然redis重定向到7003上获取key,但是不论是主节点还是从节点,都获取不到value。

针对这个问题不要慌,解决方案如下:

要确保nodes.conf 中 myself标识与当前主机端口匹配上。比如说,我在7001下修改的node.conf内容,那么端口是7001对应的节点标识就是myself,master.如果在7002下修改node.conf内容,就要把7002端口对应的节点标识改成myself。

我把node.conf都给修改正确再次重新启动redis集群,再jediscluster客户端测试可以正常插入数据了。

 

总结:

1.rediscluster create的时候要直接写真实ip地址,不要写127.0.0.1

2.nodes.conf可以直接vim修改内容,但是要注意myself的标识要分别匹配到对应节点下。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诚信赢天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值