redis集群扩容 小灰灰 2022-08-23 00:45 163阅读 0赞 **导读:** a) 此文不介绍集群的部署 b) 扩容有两种方式,一种是纵向扩容:修改maxmemory,一种是横向扩容:增加节点。这里只介绍横向扩容 c) 此文利用redis-trib.rb进行集群扩容,不涉及扩容的原理 d) 建议仔细阅读官方文档:[http://redis.io/topics/cluster-tutorial][http_redis.io_topics_cluster-tutorial] **步骤:** 1.假设已经存在集群,该集群包含三个主节点(8000/8001/8002),三个从节点( 8003/8004/8005) 2. 如何查看集群信息 ./redis-cli -c -p 8000 cluster nodes 3.启动两个新的redis实例(8006/8007),计划将8006设置为新增的主节点 4.将新的主节点8006添加到集群里面 ./redis-trib.rb add-node 127.0.0.1:8006 127.0.0.1:8000 ![Center][] 5.查看集群信息,发现节点已经添加,但是并没有分配slot ![Center 1][] 6.给新增的节点8006增加slave 注:需要注意f83c86fd7d3c25bde47e0461ffa709ea62eb12ef是8006的run id ./redis-trib.rb add-node --slave --master-id f83c86fd7d3c25bde47e0461ffa709ea62eb12ef 127.0.0.1:8006 127.0.0.1:8000 ![Center 2][] 再次查看,发现8007已经成为了8006的slave 7.给新增8006的node划分slot a) 重新分配slot ./redis-trib.rb reshard 127.0.0.1:8006 ![Center 3][] b) 屏幕提示:希望移动多少个slot,这里建议取节点平均数,假设我输入4096 c) 屏幕提示:希望把slot搬到哪里,这里输入8006的run id d) 屏幕提示:希望从哪里移动slot到8006,这里输入all,选择从所有的节点搬迁1000个slot到8006 e) 屏幕提示:输入yes确认搬迁 f) 搬迁完毕后,通过客户端查看 cluster nodes,4096个slot已经搬迁至8006新节点 问:扩容期间集群是否正常服务 答:这个测试案例中,客户端未见异常,可能是并发太低的原理,实际应用上,客户端要做好容错机制。 缩容请参考文章:[redis集群删除节点][redis] End; [http_redis.io_topics_cluster-tutorial]: http://redis.io/topics/cluster-tutorial [Center]: /images/20220722/1e03b1a293394999a7235473ce4bdcb8.png [Center 1]: /images/20220722/6eab2923ec1e41c7b6b633650d8e59b0.png [Center 2]: /images/20220722/44fc572957d2413695e9278e5b032126.png [Center 3]: /images/20220722/5541f4eef7c746efa9a61a0a57a85220.png [redis]: http://blog.csdn.net/daiyudong2020/article/details/51580068
还没有评论,来说两句吧...