分片集群之 添加删除节点

发布时间 2023-04-09 21:40:19作者: mingtian是吧

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