redis集群(单机模拟)动态添加、删除节点

客户端登录:
/usr/redis/bin/redis-cli -c -h 192.168.×.××× -p 7001
-c代表集群模式 -h代表ip -p代表端口号
查看集群状态的两种方式:
1、cluster nodes (列出当前的所有节点和相关信息) 2、cluster info(打印集群的信息)
redis-trib.rb 的用法:
reshard 重新分配槽
add-node 添加节点
create 创建集群
服务器启动的情况下,动态添加节点
主节点(master) /usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.×.× ×× :7007 192.168.×.×××:7001
从节点(slave) /usr/local/redis-3.0.0/src/redis-trib.rb add-node 192.168.×.×××:7008 192.168.×.×××7001
指定从节点方法:
replicate 是用来指定当前节点(从节点)的主节点id是哪个,首先要用客户端登录,然后执行以下命令
cluster replicate eb34324c5d616ea5827b908af0b5235f4442a931(主节点的id)就ok了,这就是将从节点加入到集群,并指定该从节点的主节点是哪一个。
删除从节点方法:/usr/local/redis-3.0.0/src/redis-trib.rb del-node 192.168.×.×××7008 30269e26cbf706907cd3343c1932a2b2d57bdd3a(要移除节点的id)
redis集群 如果移除一个节点,那么它会把该节点的进程也kill掉
删除主节点方法:首先要把主节点的slot槽还给其他主节点,要不然会出现数据丢失,也就是在删除之前要把该节点的全部数据(slot槽)移动到其他节点上去。(注意:目前只能是一个节点,还做不了平均分配)
1、/usr/local/redis-3.0.0/src/redis-trib.rb reshard 192.168.×.×××:7007 (重新分片)
2、How many slots do you want to move (from 1 to 16384)? 199
意思就是 你想移动多少个槽(从1到16384)?199(想移除主节点的槽,cluster nodes可以查出)
What is the receiving node ID? 接收节点ID是什么? 6424f56732a5c025d81c40b6cbb0dfbb986755b6(接收槽节点的id)
Please enter all the source node IDs.
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:
请输入所有源节点id。
键入“all”,将所有节点用作散列槽的源节点。
键入“done”后,输入所有的源节点id。
源节点# 1:
这里要说一下redis 3.0以前(3.0以后不知道)想把槽还回去,指能是一个节点还做不到平均分配,所以上面all基本没用,源节点#1(不是只有一个,想移动其他的也可以):就是你要移除节点的数据源,即id
Source node #1:done
Do you want to proceed with the proposed reshard plan (yes/no)?
你想执行这个计划吗?就是跟你确认一下yes就好了
执行之后登陆集群中任意一个节点查看状态 cluster nodes 就可以看到刚才的节点分配成功了,那么接下来就可以把想删除的节点干掉,从而保证数据不会丢失。
/usr/local/redis-3.0.0/src/redis-trib.rb del-node 192.168.×.×××:7007 30269e26cbf706907cd3343c1932a2b2d57bdd3a(要移除节点的id)
再查看集群状态就已经删除了该节点!

你可能感兴趣的:(redis)