Redis_14_之redis cluster通过master水平扩容增加更高的读写吞吐

1,413 阅读1分钟

Redis之redis cluster通过master水平扩容增加更高的读写吞吐

1. 加入新的master

Redis之redis cluster集群环境搭建

添加master节点命令

redis-cli --cluster add-node 192.168.75.146:7007 192.168.75.143:7001

查看添加效果

redis-cli --cluster check 192.168.75.143:7001

在这里插入图片描述

2. 添加slave节点

命令

redis-cli --cluster add-node 192.168.75.146:7008 192.168.75.143:7001 --cluster-slave --cluster-master-id 4045b5bf4431a04ab929bbe66150a4512a1564ee

在这里插入图片描述
新slave节点添加之后结果
在这里插入图片描述

3. 重新分配shard

redis-cli --cluster reshard 192.168.75.143:7001

在这里插入图片描述
在这里插入图片描述

4. 删除node

先用resharding将数据都移除到其他节点,确保node为空之后,才能执行remove操作

在这里插入图片描述

redis-cli --cluster del-node 192.168.75.146:7007 4045b5bf4431a04ab929bbe66150a4512a1564ee

在这里插入图片描述
当清空了一个master的hashslot时,redis cluster就会自动将其slave挂载到其他master上去

这个时候就只要删除掉master就可以了


5. PS:

在这里插入图片描述
==[ERR] Node 192.168.75.143:7002 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.== 解决方案:

  1. 将需要新增的节点下aof、rdb等本地备份文件删除;
  2. 同时将新Node的集群配置文件删除,即:删除你redis.conf里面cluster-config-file所在的文件;
  3. 再次添加新节点如果还是报错,则登录新Node 对数据库进行清除:flushdb #清空当前数据库

一般情况下,前两步就能解决

rm -rf /var/redis/7002/*
rm -rf /etc/redis-cluster/node-7002.conf

再次执行添加命令

在这里插入图片描述
参考传送门


Mr.superbeyone