Redis-cluster 高可用集群部署

咱们知道,Redis总共分四种架构:单机、主从、哨兵、集群,本篇文章主要讲解集群架构;
先来一张 Redis-cluster 架构图:

集群搭建步骤:
启动节点:将节点以集群方式启动,此时节点是独立的。
节点握手:将独立的节点连成网络。
槽指派:将16384个槽位分配给主节点,以达到分片保存数据库键值对的效果。
主从复制:为从节点指定主节点。

由图可知,集群中包含多个小集群,每一个小集群都是主从架构,当主节点挂掉后,它的从节点会自动进行故障转移,升级为主节点;(一个大集群中,最少须要包含三个小集群)

往集群中存数据,如何肯定保存到哪台主节点呢?
上图可知,每一个小集群中主节点都会分配必定范围的槽位,表示只有在该范围的数据才能够存进来,好比:set hello world,须要计算 Key 值hello的槽位,用来肯定存入哪一个主节点中,Redis规定,集群中槽位总数必须为16384
上图中,set hello worldhello的槽位值为866,集群中第一个主节点槽位范围为:0-5461,因此直接存入第一台主节点中;

下面演示搭建过程(四个一主一从的小集群组合为一个大集群):
首先建立八个文件夹,每个文件夹都是一个Redis实例,每个实例中都有一个redis.conf配置文件:

redis.conf 须要修改的配置:
基本配置:port、pidfile、logfile、dir
集群配置:cluster-enabled、cluster-config-file、cluster-node-timeout、cluster-replica-validity-factor、cluster-migration-barrier、cluster-require-full-coverage、luster-replica-no-failover
最后记得 :wq 保存
如今每一个文件夹下都有各自对应的 redis.conf 文件:

咱们先来启动六个redis实例:
此时没法向任何一个redis写入数据,由于各个redis实例尚未相互关联,也没有分配槽位
接下来,经过一条命令,使各个节点相互认识,分配主从,配置槽位:
首先记住一条命令:redis-cli --cluster help

由图可知,建立集群命令:

此时有六个节点,cluster-replicas 1 :表示比例,主从比例为三比三,若是写 2 ,主从比例为二比四(会报错,最少须要三个小集群);以上命令,会默认平均分配槽位;此时链接任何一个redis,执行 cluster nodes:

此时写入数据,仍是会报错:
由于 k1 的槽位值不在 7000 这台主节点上;

链接redis时,尾部加 -c (以集群方式链接),再次存入数据成功,而且自动切换到 7002 节点上;

接下来说解一下集群扩容,启动 7006 和 7007:

将这两个节点添加到集群中,主节点:

从节点:

目前7006尚未槽位,须要分配槽位:

此时要分配槽位:
此时,已经完成了槽位分配:
注意:分配槽位时,数据也会迁移过去;

接下来说解一下集群缩容,先从新分配槽位:
再删节点:(先删从节点,再删主节点,不然会执行故障转移)

故障转移期间,集群中该节点会有必定时间不可用,但不影响其余节点,反之,哨兵模式下,故障转移过程当中整个集群都不可用;
node

相关文章
相关标签/搜索