redis cluster 节点加入集群
环境说明:3主3从 集群模式
redis version 5.0.14
模拟集群中一个实例长期离线(比如虚拟机损坏、pod损坏),重启一个实例从新接入到当前集群
第一步 停止pod,模拟损坏环境
docker rm -f 6380
随后查询集群节点状态,发现当前节点已经成为fail状态
docker exec -it 6379 redis-cli --cluster call 127.0.0.1:6379 cluster nodes

在所有节点清理 fail状态的节点。需要在所有node上执行
以前工作中没有发现
--cluster指令,经常连接到所有节点上一个个清理,遇到100个节点的cluster头都大了
docker exec -it 6379 redis-cli --cluster call 127.0.0.1:6379 cluster forget cc92394077f35b11a57a68b3be32fb4cd271d23f
再次查看节点状态 docker exec -it 6379 redis-cli --cluster call 127.0.0.1:6379 cluster nodes
fail节点已经被清理干净。
第二步 重启启动损坏节点,加入集群
docker run --name=6380 --net=host --rm -d redis:5.0.14 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --port 6380
2.1 登录到当前集群的任意节点
docker exec -it 6379 redis-cli cluster meet 127.0.0.1 6380
2.2 查看节点状态docker exec -it 6379 redis-cli --cluster call 127.0.0.1:6379 cluster nodes 新节点加载回来了,但是还没有槽位信息
1aaf965eb21288921b954e0ff1037502a2aec09f 127.0.0.1:6380@16380 master - 0 1681045230551 0 connected
2.3 登录到刚刚加入的节点执行CLUSTER REPLICATE
docker exec -it 6380 redis-cli CLUSTER REPLICATE bfcf6cbe4374ac5010652c5712606444a61a7df6