redis5集群集群的理解,怎么动态增加或者删除一个节点

命令来详细了解Cluster集群每个节点的詳细信息和关系我们可以在主节点上增加数据、操作数据,也可以在从节点上读取数据这些操作当然都没有问题。我们今天这篇文章主要是讲解一下如何在不停掉Cluster集群环境的情况下动态的往集群环境中增加主、从节点和动态的从集群环境中删除节点。好了废话不多說,开始我们今天的讲解在开始之前,先要说明一下因为redis5集群的动态扩容操作都是通过redis5集群-trib.rb脚本文件来完成的,所以我们先来看看对這个脚本文件的说明效果如图:

现在正好开始我们的操作,我把增加节点和删除节点分开来写并且增加或者删除节点,我都分了两个方面来说一个方面是主节点的操作,另一个方面是从节点的操作因为主、从节点在操作上会有差异,所以分来来说增加节点的顺序昰先增加Master主节点,然后在增加Slave从节点当然这篇文章是在上一篇文章所讲的Cluster集群模式的基础之上来讲的,那就让我们先来看看上一篇文章所建立的Cluster集群模式的详细信息效果如图:

   1.2、修改配置文件,将7006和7007目录下面的redis5集群.conf配置文件的端口进行相应修改与自己的目录名稱保持一致,修改项目如下:(在linux环境下可以执行如下命令进行全局替换::%s//g%s//g,保存并退出则可)      


           

            

           

            

              在增加主节点7006的时候前面的3步是共有的,也就是从1.1-1.3之后才是建立主節点的内容,前面的3步骤针对从节点7007也是必须的我只是把这些步骤写到了创建主节点7006的步骤里,大家请知晓

     由于我们在上面嘚步骤里面创建7006和7007两个主从的节点,下面接下来的操作我就是从这个Cluster集群模式中动态的删除掉这两个节点。删除的顺序是先删除Slave从节点然后在删除Master主节点,最后还原到我们上一篇文章建立的Cluster集群模式也就是3个主节点和3个从节点。现在是4个主节点和4个从节点效果如图:

     1.1、删除7007从节点,输入del-node命令指定删除节点的IP地址和Port端口号,同时还要提供该从节点ID名称

       要想删除Master主节点,可能偠繁琐一些因为在Master主节点上有数据槽(slots),为了保证数据的不丢失,必须把这些数据槽迁移到其他Master主节点上然后在删除主节点。

   今忝就写到这里了做一个小小的总结。主从复制和哨兵模式这两个集群模式由于不能动态扩容而且主节点之间(有多个主节点的情况)數据完全一样,导致了主节点的容量成了整个集群的瓶颈如果想扩展集群容量,必须扩展主节点的容量由于以上的问题,redis5集群在3.0开始Cluster集群模式这个模式在主节点之间数据是不一样的,数据也可以根据需求自动转向其他节点这样就可以实现横向动态扩容,新增加的主從节点用于存储新的数据则可,对以前的节点的数据不会有任何影响再者说,配置也很简单这才是我们所需要的集群模式。

1:首先把需要添加的节点启动

2:執行以下命令将这个新节点添加到集群中

4:增加了新的节点之后,这个新的节点可以成为主节点或者是从节点

4.1 把这个节点变成主节点使用redis5集群-trib程序,将集群中的某些哈希槽移动到新节点里面 这个新节点就成为真正的主节点了。

执行下面的命令对集群中的哈希槽进行移動

系统会提示我们要移动多少哈希槽这里移动1000

然后还需要指定把这些哈希槽转移到哪个节点上,

输入我们刚才新增的节点的ID

然后需要峩们指定转移哪几个几点的哈希槽

输入all 表示从所有的主节点中随机转移凑够1000个哈希槽

然后再输入yesredis5集群集群就开始分配哈希槽了

至此,一个新的主节点就添加完成了执行命令查看现在的集群中节点的状态

4.2:把这个节点变成从节点

前面我们已经把这个新节点添加到集群Φ了,现在我们要让新节点成为127.0.0.1:7001的从节点只需要执行下面的命令就可以了,命令后面的节点ID就是127.0.0.1:7001的节点ID

看到下面图片中的情况就表示添加成功

redis5集群集群删除节点

1:如果删除的节点是主节点这里我们删除127.0.0.1:7006节点,这个节点有1000个哈希槽

首先要把节点中的哈希槽转移到其他节点Φ执行下面的命令

系统会提示我们要移动多少哈希槽,这里移动1000个因为127.0.0.1:7006节点有1000个哈希槽

然后系统提示我们输入要接收这些哈希槽的节點的ID,这里使用127.0.0.1:7001的节点ID

然后要我们选择从那些节点中转出哈希槽这里一定要输入127.0.0.1:7006这个节点的ID,最后输入 done  表示输入完毕

最后一步使用下媔的命令把这个节点删除

2:如果节点是从节点的,直接使用下面的命令删除即可

  本文主要是承接上一篇文章redis5集群集群的离线安装成功以后我们如何进行给集群增加新的主从节点(集群扩容)以及如何从集群中删除节点(集群缩容),也就是集群的伸缩集群伸缩的原理是控制虚拟槽和数据在节点之间进行移动,通过实际操作来整理一下集群的伸缩
  上篇文章中搭建好的集群为三主彡从,端口号为7000、7001、7002、7003、7004、7005

查看集群的slots分配情况以及节点之间的主从关系:

  在本例中我们先增加两个节点:主节点7006和从节点7007,并给7006汾配4096个slots设置7007为7006的从节点,然后再将这两个节点从集群中删除一定要先删除主节点,再删除从节点要不然故障转移会生效。

    增加完成后的目录

   复制端口7000的redis5集群.conf配置文件到redis5集群7006和redis5集群7007目录下并修改配置文件中的端口为对应目录的端口号。

  准备完成后启动两个新的redis5集群节点:

  启动以后登录7006查看节点情况:

  (1)向集群中添加节点7006,注意一定要保证节点里面没有添加过任何数据不然添加会报错。

//第一次节点为新增的节点 第二个节点为集群中的节点

    可以看到使用addnode命令来添加节点第一个参数是新节点的哋址,第二个参数是任意一个已经存在的节点的IP和端口. 我们可以看到新的节点已经添加到集群中:

  新节点7006现在已经连接上了集群 成为集群的一份子, 并且可以对客户端的命令请求进行转向了 但是和其他主节点相比, 新节点还有两点区别:

  • 新节点没有包含任何数据 因為它没有包含任何哈希槽.
  • 尽管新节点没有包含任何哈希槽, 但它仍然是一个主节点 所以在集群需要将某个从节点升级为新的主节点时, 這个新节点不会被选中

    接下来, 只要使用 redis5集群-trib 程序 将集群中的某些哈希桶移动到新节点里面, 新节点就会成为真正的主节点叻

    (2)为主节点7006分配虚拟槽

  因为我们增加7006为主节点后,一共存在四个主节点为了平均分配我们需要给7006分配16384除以4等于4096个节点,所以我们输入4096按enter继续:

  输入7006的节点ID,按enter继续:

  从哪些主节点抽取槽到新节点中:all为所有主节点done:指定节点,在这里我们输入all,按enter继续:

  输入yes后按enter开始给7006分配虚拟槽分配完成后:

     登录集群查看一下集群的状态:

    至此主节点已经添加完毕了,峩们的集群由三主三从变成了四主三从

  3.添加从节点7007

//第一次节点为新增的节点 第二个节点为集群中的节点

  加入集群成功,登录到集群中查看一下集群状态:

  7007还是一个Master节点而且没有拥有自己的slot槽。那么我们接下来要让它变成从节点

   使用CLUSTER REPLICATE 命令改变一个从節点的主节点。

  设置成功后查看一下:

    集群的从节点7007添加成功

第一个参数是任意一个节点的地址,第二个节点是你想要移除嘚节点地址。

使用同样的方法移除主节点,不过在移除主节点前需要确保这个主节点是空的. 如果不是空的,需要将这个节点的数据重新分片箌其他主节点上.替代移除主节点的方法是手动执行故障恢复,被移除的主节点会作为一个从节点存在不过这种情况下不会减少集群节点嘚数量,也需要重新分片数据.

   删除节点用del-node命令此命令需要制定删除节点的ip和端口,以及节点的id

  删除后我们再次查看集群的節点信息,如下所示7007从节点已经被移除掉。

    选择完这几项以后回车继续:

    输入yes,表示接受这个计划,然后回车完成7006節点的槽的移除。

    登录集群查看当前集群情况:

     节点7006上没有任何槽

   最后登录查看集群又恢复到了三主三从的结构叻,只是从刚开始的均匀分配变成了7000端口的主节点多了4096个slots

我要回帖

更多关于 redis5集群 的文章

 

随机推荐