Redis集群节点更换ip后如何恢复
这篇文章用来记录一次因ip换了导致redis集群失效后怎么恢复。
这几天在学习尚硅谷的docker课程,跟着一起搭建docker redis集群,也非常的顺利哈,然后我就去睡觉了,今天想着继续学习扩容和所容,可电脑一打开查看之前的集群状态
全挂了,后面发现是ip变了,因为我们知道redis集群创建时是指定了节点的ip:port,所以ip换了,集群自然也就失效了
修改方法:
因为我之前是有做容器和宿主机之间数据的映射的,所以我只需要修改宿主机的conf文件就可以了
找到节点的配置文件,本例子中的目录是:/redis-node-1/nodes.conf
[mrluo@localhost redis-node-2]$ cat nodes.conf
af168b3a9c235e2b8fe703052da0bdabf216adc0 192.168.23.181:6384@16384 slave 31c39b2e9f6ef14e6a8977872d0b6ee4dcd131c6 0 1700062435420 2 connected
31c39b2e9f6ef14e6a8977872d0b6ee4dcd131c6 192.168.23.181:6382@16382 myself,master - 0 1700062432000 2 connected 5461-10922
c76ad0a77f5d515a0a86c11a714cea13ba7a8ee6 192.168.23.181:6385@16385 slave ea43d4d0f9664b72f45893bcd1f202b6b6045ab5 0 1700062434385 3 connected
ea43d4d0f9664b72f45893bcd1f202b6b6045ab5 192.168.23.181:6383@16383 master - 0 1700062433000 3 connected 10923-16383
4ec398d19f1d57788be11125d7d181f29ef55af2 192.168.23.181:6386@16386 slave 469916c48fae044dd82645e0c5776c5ce9b37d16 0 1700062434000 1 connected
469916c48fae044dd82645e0c5776c5ce9b37d16 192.168.23.181:6381@16381 master - 0 1700062433000 1 connected 0-5460
vars currentEpoch 6 lastVoteEpoch 0
只需要将所有的节点ip地址都修改完成就可以了,通过ifconfig命令查询到当前的ip为192.168.23.183,也就是说将之前的192.168.23.181换成192.168.23.183然后重启就OK
执行以下命令
sed -i 's/192.168.23.181/192.168.23.183/g' redis-node-1/nodes.conf redis-node-2/nodes.conf redis-node-3/nodes.conf redis-node-4/nodes.conf redis-node-5/nodes.conf redis-node-6/nodes.conf
可以看到ip都换过来了
之后重启容器再随便进入一个节点
docker exec -it redis-node-1 /bin/bash
登录redis并查询节点状态
redis-cli -p 6381
cluster nodes
可以看到没有fail了,集群恢复
总结,修改所有配置文件的ip地址然后重启节点