转载出处:享学课堂online
作者:提灯
本次工作最大的坑就是:各种过时的教程和错误教程留下的新坑 ~~坑中打滚实录~~
本文只搭建最简单的集群
>环境:redis版本:5.7
>操作系统:linux虚拟机
>虚拟机软件:VMware Workstation 10.0.3
>本次ip地址配置为:192.168.163.101
这个报错是说您想搞的节点未配置为群集节点,我相信很多人百度过这个,百度上的解释真的是五花八门,什么复制redis整个文件夹到xxx目录下/修改xxxxx配置啊/装trib插件。
简单来说你的问题可能是:
启动的还是默认的:redis启动方式
或
启动的配置文件中没有配置对应的参数
如何解决呢?
1.我们先来明确一个叫 redis-server 的启动文件,这个文件是对redis加载对应的配置文件来启动redis,具体坐标在redis安装文件中的src文件夹中。
2.对应的配置文件:redis.conf,具体怎么配置属性下文讲,位置就在redis文件夹中。
3.写到这里你也大概知道了吧,我们需要用 redis-server 去启动你配置好的 redis.conf 文件。
因为每启用一个节点就要配置一个对应的redis.conf文件,所以为了我们可以更好的管理我们的配置文件,所以,我们可以在redis安装位置的同级目录,创建一个个对应管理文件夹,文件名是无所谓的。
这个redis-5.0.7就是我的安装文件,切记这个文件中所有的文件,均不需要更改 !!! 我这次用的端口7001-7006,所以就建了6个对应的文件夹你看我起名字多随意 接着我们就去直接从redis安装目录下的redis.conf文件给复制过来,进行更改
我这文件夹中只有一个对应的配置文件,我看的一些教程中有说复制整个安装目录的就歇歇吧,接着我们修改这个文件即可。
port 6379 #端口
cluster-enabled yes #启用集群模式
cluster-node-timeout 5000 #超时时间
Appendonly yes # 是否启用aof
daemonize yes #后台运行
protected-mode no #非保护模式
cluster-config-file nodes.conf # redis启动自己创建
pidfile /var/run/redis_6379.pid
bind 0.0.0.0 #可读取地址 0.0.0.0代表都能读取
这里说明下,部分配置在配置文件有加上#号,就去掉,bind这个配置有3个,前两个都是有#注释了,只有一个默认是127.0.0.1是没有注释的,改这个就好了。
这里着重说下bind这个选项,如果你的公司没有特殊要求,建议参数改为 0.0.0.0 ,不然会出现很多奇奇怪怪的错误,而且是那种解决一种另外一种又出现的错误
这里我把我的7001的配置直接发上来,如果搞不定的话,或者是我漏写了某个要点,我把我配置好的文件拿出来,特地实验过新的虚拟机装redis后redis-server直接跑没问题。
修改好的配置文件地址:
链接:https://pan.baidu.com/s/1MbRin1VjNsBSnYjw8N67eA 提取码:8pt6
我们将这个redis.conf文件,分别复制到对应的文件目录中,接着我们直接将文件中所有的7001改成对应的700x,配置就完成了,简不简单啊ヽ( ̄▽ ̄)ノ
本次路径解释
/usr/local/src/redis/redis-5.0.7/src/redis-server #安装目录下redis-server的路径
/usr/local/src/redis/7001/redis.conf #配置文件中的redis.conf路径
首先分别启动7001,7002,7003这3个实例
接着我们运行:
redis-cli--cluster create192.168.163.101:7001192.168.163.101:7002192.168.163.101:7003
这个就是设置这3个端口,创建集群主节点的操作,如果这时候,你报错说什么连不上这3个端口,就去上文看我写的bind的配置。
如果再次出现[ERR] Node 192.168.163.101:6379 is not configured as a cluster node.说明我上面写的集群配置你还是no
这里注意一定要写yes!!! 只写个y或者写什么鬼东西的,出了问题,概不负责。
查询集群状态(任意一个节点均可查询):
redis-cli--cluster check192.168.163.101:7001--cluster-search-multiple-owners
这样子表示3个主节点均已开启,都是0个从节点是正常的,因为我都没配嘛。
这一步应该都懂怎么创建实例了吧,创建过程就跳过,↓添加从节点代码
redis-cli--cluster add-node#从节点# #主节点# --cluster-slave
redis-cli--cluster add-node192.168.163.101:7004192.168.163.101:7001--cluster-slave
上一步没错,这步也大概率错不了。 增加时:会平均的给7001.7002.7003分配从节点
所有的节点都出现1个子节点,说明配置成功了,
恭喜了各位,到这一步,7001.7002.7003.7004.7005.7006 已经是个完整的集群了
参考: https://www.cnblogs.com/zhoujinyi/p/11606935.html
不知道自己版本的可以先在liunx下用:redis-cli --version 或 redis-cli -v 进行查询
如果自己的版本是5.0以上本文适合你,如果你用的还是4.0我就无能为力了
有关于集群的改动,其实就一条:
如果你跟我一样,找教程时候,发现这个教程要装除了redis之外的另外一个trib脚本,就说明他是4.0版本的软件,当然操作命令行还是一样的,但我就没成功顺着那些教程走起来…(ŎдŎ;)
报错:
Exception in thread "main" redis.clients.jedis.exceptions.JedisMovedDataException: MOVED 7798 192.168.163.101:7002
或
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
错误演示:
[root@localhost ~]# /usr/local/src/redis/redis-5.0.7/src/redis-server /usr/local/redis-cluster/redis02/redis.conf
错误:
1385:C 01 Mar 2020 14:24:20.420 # Fatal error, can't open config file '/usr/local/redis-cluster/redis02/redis.conf'
在liunx下,可以进入节点,但set时候报这个错的话,你说你是不是配置主节点的是时候没有老老实实输入yes,重新来一遍吧