【redisCluster】外网远程连接:Could not get a resource from the pool

最近搭建redisCluster集群做测试遇到些坑耽误了很长时间,记录一下:

redisCluster 集群搭建在远程阿里云上,搭建过程一切正常,但是在我本地客户端可以正常连接并对立面的值进行编辑,但是在JAVA代码测试类以及集成的spring-redisCluster中总是报错会报不同的错,

main方法中客户获取到redisCluster中的值但是无法进行set,而spring集成的redisCluster报的错误比较直接 
Caused by: java.lang.IllegalArgumentException: Node 172.01.34.91:9006 is unknown to cluster

看到这里非常奇怪创建集群的时候命名用的是内网怎么显示的事内网的IP:

ruby redis-trib.rb  create --replicas 1 66.66.136.66:9001 66.66.136.66:9002 66.66.136.66:9003 66.66.136.66:9004 66.66.136.66:9005 66.66.136.66:9006

而对JAVA测试类跟踪断点获取的cluster对象中的节点中也有内网的IP因此断定是配置文件出的问题;

redis各节点的配置文件如下:

执行完集群创建命令后:

ruby redis-trib.rb  create --replicas 1 66.66.136.66:9001 66.66.136.66:9002 66.66.136.66:9003 66.66.136.66:9004 66.66.136.66:9005 66.66.136.66:9006

命令后生成的一个内网的IP:注意红色的部分自动的生成了一个内网的IP

解决方法:

1、首先把redis所有的服务进行结束掉,同时删除有问题的NODE(nodes-9001.conf)配置信息及归档数据文件dump.rdb

结束进程:

删除历史数据及配置文件:

2、重启所有redis服务,9001.。。9006;

3、重新设置集群(注意IP一定要是外网IP):

ruby redis-trib.rb  create --replicas 1 66.66.136.66:9001 66.66.136.66:9002 66.66.136.66:9003 66.66.136.66:9004 66.66.136.66:9005 66.66.136.66:9006

4、修改配置文件中内网IP改为外网IP:※此处有个坑所有nodeji

切记步骤:必须必须一个一个的修改不要贪图方便一下全部修改直接重启,个人感觉没重启一个redis节点后,其他相应的节点信息会因为该节点的调整重新进行设置:

首先:先结束9001进程,修改完node-9001.conf,重启9001后,

然后:再结束9002的进程,修改node-9002.conf的IP,再启动9002的服务,以此类推直至重启完毕。。

redis服务重启完毕后重新进行测试问题解决,至于“ruby redis-trib.rb  create --replicas 1 66.66.136.66:9001 66.66.136.66:9002 66.66.136.66:9003 66.66.136.66:9004 66.66.136.66:9005 66.66.136.66:9006” 命令千万不要再去执行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章