记两次问题排查。
同样的错误:
redis Illegal character in scheme name at index 0: []r[]e[]d[]i[]s[]:[]/[]/[
两次的原因:
1. 引用的redis jar 包版本有问题,换版本后解决。
2. redis 集群搭建有问题。
主要记录第二次,redis 集群搭建问题:
部署上云的java微服务模块启动的时候报这个错。它需要连接一个搭建在本机上的redis集群
搜索了一番后,发现问题在集群搭建上:
因为在用 redis-cli查询 cluster nodes,返回的节点只有自己。
./src/redis-cli -h x.xx.x.xxx -p 7002 -a qq
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
1.94.1.189:7002> cluster nodes
85653e4b21c46d1bb6f2b1e74595bbcb30a7b97e :7002@17002 myself,master - 0 0 3 connected 10923-16383
那么重新构建集群:
redis-cli -a qq --cluster create 1.98.x.xxx:7000 1.98.x.xxx:7001 1.98.x.xxx:7002 1.98.x.xxx:7003 1.98.x.xxx:7004 1.98.x.xxx:7005 --cluster-replicas 1
IP是云服务器外网地址1.98.x.xxx,从本地远程连接云服务器跑这个命令,结果卡在"Waiting for the cluster to join........"
搜索发现可能是集群总线端口没配好,于是在 启动redis docker的 docker-compose 文件里添加了 该端口:
远程访问也改成了本机访问:
redis-cli -a qq --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
还是会卡在"Waiting for the cluster to join........"
再把 IP 换成各个容器的内网 IP:
redis-cli -a qq --cluster create 172.24.0.4:7000 172.24.0.6:7001 172.24.0.3:7002 172.24.0.2:7003 172.24.0.7:7004 172.24.0.5:7005 --cluster-replicas 1
终于成功了:
此时,再去跑我的 java程序,就不再有"redis Illegal character in scheme name at index 0: []r[]e[]d[]i[]s[]:[]/[]/["这个错误了。