Redis
提供了灵活的节点扩容和收缩方案。在不影响集群对外服务的情况下,可以为集群添加节点进行扩容也可以对下线节点进行缩容。
我们在这篇文章中搭建了一个三主三从的Redis
集群(如下图所示)。在这篇博客中根据源码详细剖析了搭建集群的流程。
本篇博客要讲的是,Redis
集群的扩容和缩容过程。
我们先根据将如图的集群搭建起来,查看搭建的效果。
127.0.0.1:6379> cluster nodes
29978c0169ecc0a9054de7f4142155c1ab70258b 127.0.0.1:6379 myself,master - 0 0 7 connected 0-5461
8f285670923d4f1c599ecc93367c95a30fb8bf34 127.0.0.1:6380 master - 0 1496717082785 3 connected 5462-10922
66478bda726ae6ba4e8fb55034d8e5e5804223ff 127.0.0.1:6381 master - 0 1496717085793 2 connected 10923-16383
961097d6be64ebd2fd739ff719e97565a8cee7b5 127.0.0.1:6382 slave 29978c0169ecc0a9054de7f4142155c1ab70258b 0 1496717084791 7 connected
6fb7dfdb6188a9fe53c48ea32d541724f36434e9 127.0.0.1:6383 slave 8f285670923d4f1c599ecc93367c95a30fb8bf34 0 1496717087797 4 connected
e0c7961a1b07ab655bc31d8dfd583da565ec167d 127.0.0.1:6384 slave 66478bda726ae6ba4e8fb55034d8e5e5804223ff 0 1496717086795 2 connected
对应的主节点负责的槽位信息,如下图所示:
扩容集群是分布式存储最常见的需求,Redis
集群扩容可以分为如下步骤:
我们需要两个节点,端口分别为6385
和6386
,配置和之前集群节点配置基本相同,除了端口不同,以便于管理。6385
节点配置如下:
port 6385 //端口
cluster-enabled yes //开启集群模式
cluster-config-file nodes-6385.conf //集群内部的配置文件
cluster-node-timeout 15000 //节点超时时间,单位毫秒
// 其他配置和单机模式相同
启动两个节点
sudo redis-server conf/redis-6385.conf
sudo redis-server conf/redis-6386.conf
启动后的新节点会作为孤儿节点运行,没有和其他节点与之通信。
我们可以通过CLUSTER MEET
命令将6385
节点加入到集群中。
127.0.0.1:6379> CLUSTER MEET 127.0.0.1 6385
OK
127.0.0.1:6379> CLUSTER NODES
cb987394a3acc7a5e606c72e61174b48e437cedb 127.0.0.1:6385 master - 0 1496731333689 8 c