主从容错
关掉master节点后 slave节点会替代master节点
docker ps
选择一个节点状态进入 查看集群节点
docker exec -it redis-node-2 /bin/bash
redis-cli -p 6382 -c -a foobared
cluster nodes
主6381-从6385
主6382-从6386
主6383-从6384
关掉master节点6381
docker stop redis-node-1
查看集群节点
docker exec -it redis-node-2 /bin/bash
redis-cli -p 6382 -c -a foobared
cluster nodes
6381关闭 6385成为master节点
重启6381节点
6381成为6385从节点
注意
如果主节点设置了密码 从节点需要配置masterauth才能实现主从容错机制
扩容
新增6887 6388节点
docker run -d --name redis-node-7 --net host --privileged=true -v /usr/local/software/redis-cluster/config/redis-node-7/redis.conf:/etc/redis/conf/redis.conf -v /usr/local/software/redis-cluster/data/redis-node-7:/data redis:6.0.8 redis-server /etc/redis/conf/redis.conf
docker run -d --name redis-node-8 --net host --privileged=true -v /usr/local/software/redis-cluster/config/redis-node-8/redis.conf:/etc/redis/conf/redis.conf -v /usr/local/software/redis-cluster/data/redis-node-8:/data redis:6.0.8 redis-server /etc/redis/conf/redis.conf
进入6387实例 将节点添加到集群
docker exec -it redis-node-7 /bin/bash
redis-cli --cluster add-node 新增节点ip:6387 集群主节点ip:6381 -a 密码
查看结群节点信息
redis-cli --cluster check ip:6381
此时尚未分配槽号
重新分配槽号
redis-cli --cluster reshard ip:6381
总槽数 16384/节点数 选择要分配的节点ID
分配之后的6387节点 是之前集群中三个节点均匀分配出来的1346个槽点合并
为6387分配slave节点6388
redis-cli --cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点ID -a 密码
缩容
删除slave节点6388
redis-cli --cluster del-node ip:从机端口 从机6388节点ID
查看节点信息
redis-cli --cluster check ip:6381 -a 密码
清空6387槽号 重新分配
redis-cli --cluster reshard ip:6381 -a 密码
填写要操作的槽号数量
接收的节点ID
来源ID
这里全部分配给了6381节点
查看节点信息 重新分槽成功
redis-cli --cluster check ip:6381
删除master6387节点
redis-cli --cluster del-node ip:从机端口 从机6387节点ID
停掉 6387 6388
docker stop redis-node-7 redis-node-8