因为一些原因,以前IP没法用了,所有节点都down掉了,所以项目忽然报错:
服务器现在修改Redis节点的IP地址
注意,虽然是修改,但实质上是重建集群,所以需要你删除之前每个节点的一些文件,才能用新的IP重建集群:
在删除之前,要先暂停所有节点:
查看Redis进程:
ps -ef|grep redis
然后杀死进程:
kill -9 xxx
好了,可以开始删除相关文件了:
需要删除的文件 : Redis每个节点相应的 持久化文件和节点信息文件:
进入每一个节点,有dump.rdb持久化文件和nodes.conf节点信息文件,删除。
你要是忘了自己文件在哪里了,可以用下面指令查看一下目录:
find / -name 文件名
我这里都放在一起了:
在对应文件目录下删除相关文件:
rm -f nodes-*.conf
rm -f dump-*.rdb
删除后只留下如下文件:
PS:(如果你的Redis.conf文件里开启并生成了appendonly.aof,你也必须删除它,因为不删除aof文件会和不删除rdb文件一样导致在接下来重新创建节点过程中出现原节点存在数据(Not Empty)异常)
接着:
在重建集群之前需要你依次将每个节点重新启动起来,否则会直接报错 [ERR] Sorry, can't connect to node
重新创建集群(用新的ip)执行redis-trib.rb脚本:
(*注意:"192.168.127.130"是本地局域网IP,如果是生产环境下或者非本地测试,请直接使用服务器外网IP地址)
./redis-trib.rb create --replicas 1 192.168.127.130:8000 192.168.127.130:8001 192.168.127.130:8002 192.168.127.130:8003 192.168.127.130:8004 192.168.127.130:8005
我执行到这里就已经成功了,但是由于IP原因,我这里引用别人一的张图(别人图片还有说明,比我认真多了):
输入yes,创建成功.
后记:
1、通过以上步骤,重新配置Redis集群IP就成功了。
2、总结可能出现的步骤问题,导致客户端不能正常访问Redis:
1、redis.conf限制了IP地址访问
2、没有开启Redis集群总线端口==>"Redis端口+10000"
3、使用rudy命令开启集群,在非本地环境下,没有使用外网IP
ruby redis-trib.rb create --replicas 1 外网IP:7000 外网IP:7001 外网IP:7002 外网IP:7003 外网IP:7004 外网IP:7005