逻辑集群简介
Redis从3.0开始引入集群模式的概念。
集群由多个节点(Node)组成,Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。
Redis集群模式的作用主要分为:
- 数据分区:数据分区(或称数据分片)是集群最核心的功能。
- 高可用:Redis集群模式中,每个主实例都会存在至少一个备实例,能够在主实例故障之后,顶替主实例工作。整个集群不可用时间在30s以下。
逻辑集群的创建
下载Redis源代码:
git clone git@github.com:redis/redis.git
cd redis
给Redis实例开启集群模式
使用下面命令启动6个redis实例:
cd /utils/create-cluster
./create-cluster start 6
创建完成之后,实例的cluster模式已经被打开:
cluster的配置已经配置:
默认情况下,只有当前节点自己
创建逻辑集群
执行下面命令创建逻辑集群:
./create-cluster create 6
创建完成之后登录集群执行 cluster info
可以看到:
里面主要执行了:
redis-cli --cluster create 主实例 --cluster-replicas 备实例
create里面主要执行了下面两个操作:
- 实例之间执行
cluster meet
,创建逻辑集群,比如cluster meet ip port
- 根据当前的实例分配主从关系。使用给主实例指定从实例:
CLUSTER REPLICATE id
,其中id就是从实例的唯一id。image3中的第一列值。
- 在主实例上执行
cluster setslot slot <slot>
分配槽位,将16384个槽位均分到3个主实例上
下面是创建了集群了配置信息:
文件里面含义如下:
- 第一列表示当前实例的唯一表示id,长度固定。
- 第二列表示当前实例的ip和端口信息,格式:当前实例监听ip:监听端口@集群通信端口
- 第三列表示当前实例是主实例还是从实例,是否为当前登录实例,包含myself的是当前配置文件对应的实例
- 第四列表示对应主实例的id,
-
表示当前实例是主实例
- 第五、六、七列分别是:已经发送的ping大小,接收到的pong的大小,当前实例的
Epoch
- 第八列是当前实例是否可以连通整个集群:
connected
表示连通,disconnected
表示连不通
- 第九列以及后面的列表示当前实例所对应的槽位,比如
0-1000
表示当前实例包含0-1000的槽位