Redis集群之修改节点IP

Posted X凯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis集群之修改节点IP相关的知识,希望对你有一定的参考价值。

因为一些原因,以前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 

 

以上是关于Redis集群之修改节点IP的主要内容,如果未能解决你的问题,请参考以下文章

redis高可用之主从复制,哨兵,集群

Redis 3.2.1集群 —— CLUSTER MEET ip port

Redis本地集群搭建(5版本以上)

Redis之集群知识点总结-- 源码分析

Redis集群动态增加或者删除节点

Redis 高可用之主从复制哨兵模式集群模式