添加节点
因公司业务发展迅猛,现有的三主三从redis cluster架构可能无法满足现有业务的并发写入需求,因此公司紧急采购一台服务器192.168.7.107,需要将其动态添加到集群当中其不能影响业务使用和数据丢失,则添加过程如下:
同步之前Redis node的配置文件到192.168.7.104 Redis编译安装目录,注意配置文件的监听 IP。
添加master节点
redis-cli --cluster add-node 192.168.148.161:6379(新节点) 192.168.148.158:6379(已存在节点)
重新分槽位
redis-cli --cluster reshard 192.168.148.158:6379
How many slots do you want to move (from 1 to 16384)? 4096 分配多少个槽位
What is the receiving node ID? 3f90bcb68ea337b57c9967c969dc61e7051f2355
Please enter all the source node IDs. 接收slot的服务器Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1: all
all #将哪些源主机的槽位分配给192.168.7.104:6379,all是自动在所有的redis node选择
划分,如果是从redis cluster删除主机可以使用此方式将主机上的槽位全部移动到别的redis主机
支持数据的分配
redis-cli --cluster info 192.168.148.158:6379
添加slave节点
redis-cli --cluster add-node 192.168.148.161:6380 192.168.148.158:6379 --cluster-slave --cluster-master-id 3f90bcb68ea337b57c9967c969dc61e7051f2355
查看
删除节点
添加节点的时候是先添加node节点到集群,然后分配槽位,删除节点的操作与添加节点的操作正好相反,是先将被删除的Redis node上的槽位迁移到集群中的其他Redis node节点上,然后再将其删除,如果一个Redis node节点上的槽位没有被完全迁移,删除该node的时候会提示有数据且无法删除
案例:
由于1服务器使用年限已经超过三年,已经超过厂商质保期而且硬盘出现异常报警,经运维部架构师提交方案并同开发同事开会商议,决定将现有Redis集群的4台主服务器临时下线,三台服务器的并发写入性能足够支出未来1-2年的业务需求,则删除Redis 的操作如下
重新分槽位
将192.168.148.161的槽位分给192.168.148.158
redis-cli --cluster reshard 192.168.148.158:6379
redis-cli --cluster info 192.168.148.158:6379
删除master和slave节点
redis-cli --cluster del-node 192.168.148.158:6379 ae633599ce7bdca20d3c23ee065f6138ab9b2f4a
redis-cli --cluster del-node 192.168.148.158:6379 a42ef3a8f78bb63bae50c00a5008f419ab9a3465
master宕机
环境
被slave选为master
集群导入现有数据
edis-cli --cluster import 集群服务器IP:PORT --cluster-from 外部Redis node-IP:PORT --
cluster-copy --cluster-replace
数据压测工具
redis-benchmark -h 192.168.160 -p 6379 -c 500 -n 1000
-t 操作 案例:-t set