一: 假设有6个redis:
172.16.251.5:6379 172.16.251.6:7379
172.16.251.5:6380 172.16.251.6:7380
172.16.251.5:6381 172.16.251.6:7381
二: 新建:
在任意节点上执行:
redis-trib.rb create --replicas 1 172.16.251.5:6379 172.16.251.5:6380 172.16.251.5:6381 172.16.251.6:7379 172.16.251.6:7380 172.16.251.6:7381
上面的--replicas 1 表示每个主节点有1个从节点
使用redis-trib.rb时可能会遇到ruby依赖的问题,可通过:
yum install ruby && gem install redis -v 3.0.5 解决
三:增加节点
假设现在新增 172.16.251.5:6382 172.16.251.6:7382
俩个redis
新增1个主节点172.16.251.5:6382
:
redis-trib.rb add-node 172.16.251.5:6382 172.16.251.5:6379
172.16.251.5:6382: 为新增的节点 172.16.251.5:6379为老集群中的任一节点
使用redis-trib.rb reshard 给新增的节点分配数据槽
redis-trib.rb reshard 172.16.251.5:6382
给172.16.251.5:6382
新增一个从节点:
redis-trib.rb add-node 172.16.251.6:7382 172.16.251.5:6379
redis-cli -h 172.16.251.6 -p 7382
172.16.251.6:7382> cluster replicate d02b1ec797d792229905115b242f4b8e7093b7ae
OK
172.16.251.6:7382>
其中d02b1ec797d792229905115b242f4b8e7093b7ae为172.16.251.5:6382这个主节点在集群中的ID
四: 删除节点
假设现在需要删除172.16.251.5:6382 172.16.251.6:7382
这俩个节点
1:先将从节点删除:
./redis-trib.rb del-node 172.16.251.6:7382 d61d0229976a47272177483e6a979a10828c2d9f
d61d0229976a47272177483e6a979a10828c2d9f为这个节点的ID
2: reshard掉主节点上面的数据:
redis-trib.rb reshard 172.16.251.5:6382
3:删除node
redis-trib.rb del-node 172.16.251.5:6382 d02b1ec797d792229905115b242f4b8e7093b7ae