这篇文章主要给大家介绍了关于Redis集群增加节点与删除节点的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

本文主要是承接上一篇文章Redis集群的离线安装成功以后,我们如何进行给集群增加新的主从节点(集群扩容)以及如何从集群中删除节点(集群缩容),也就是集群的伸缩,集群伸缩的原理是控制虚拟槽和数据在节点之间进行移动,通过实际操作来整理一下集群的伸缩。

上篇文章中搭建好的集群为三主三从,端口号为7000、7001、7002、7003、7004、7005。

查看集群启动情况:ps -ef | grep redis

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

首先登陆节点7000:redis-cli -p 7000 -h 192.168.182.132 -c //注意不要丢了-c

cluster nodes 查看集群节点信息

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

一、集群的扩容

1.准备新的节点

在集群目录redis_cluster目录下增加redis7006和redis7007目录

mkdir redis7006

mkdir redis7007

增加完成后的目录

 复制端口7000的redis.conf配置文件到redis7006和redis7007目录下,并修改配置文件中的端口为对应目录的端口号。

例如redis7006下的redis.conf文件的内容为:

port 7006
bind 192.168.182.132 //本机IP
daemonize yes //设置为后台运行
pidfile /var/run/redis-7006.pid
cluster-enabled yes //开启集群
cluster-config-file node-7006.conf
cluster-node-timeout 15000
appendonly yes

准备完成后,启动两个新的redis节点:

redis-server redis7006/redis.conf

redis-server redis7007/redis.conf

ps -ef | grep redis //查看新的redis节点是否启动成功

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

redis-cli -p 7006 -h 192.168.182.132 -c

cluster nodes

2.添加主节点

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

 cd /usr/local/redis/redis/src

./redis-trib.rb add-node 192.168.182.132:7006 192.168.182.132:7000
 //第一次节点为新增的节点 第二个节点为集群中的节点

添加成功:

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

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

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

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

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

cd /usr/local/redis/redis/src

./redis-trib.rb reshard 192.168.182.132:7001 //可以为任意的节点 在此登录的7001只是作为客户端去访问的

执行后:

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

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

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

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

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

redis-cli -p 7000 -h 192.168.182.132 -c

cluster nodes

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

  3.添加从节点7007

 (1)使用add-node添加新节点

 cd /usr/local/redis/redis/src

./redis-trib.rb add-node 192.168.182.132:7007 192.168.182.132:7000
 //第一次节点为新增的节点 第二个节点为集群中的节点

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

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

(2)将7007变为7006的 从节点

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

redis-cli -p 7007 -h 192.168.182.132

cluster replicate 52d169e7011ccdf10f99c1d83f92409dcc37ab55 //后面的字符串为节点7006的节点ID

设置成功后查看一下:

集群的从节点7007添加成功。

二、集群的缩容

只要使用del-node命令即可:

./redis-trib del-node 127.0.0.1:7000 <node-id>
第一个参数是任意一个节点的地址,第二个节点是你想要移除的节点地址。

使用同样的方法移除主节点,不过在移除主节点前,需要确保这个主节点是空的. 如果不是空的,需要将这个节点的数据重新分片到其他主节点上.

替代移除主节点的方法是手动执行故障恢复,被移除的主节点会作为一个从节点存在,不过这种情况下不会集群节点的数量,也需要重新分片数据.[/code]

1.删除从节点

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

cd /usr/local/redis/redis/src

./redis-trib.rb del-node 192.168.182.132:7007 7007节点ID

删除成功后:

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

2.删除主节点

(1)将主节点7006的slots分配到其他主节点上

  cd /usr/local/redis/redis/src

  ./redis-trib.rb reshard 192.168.182.132:7006

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

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

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

节点7006上没有任何槽。

(2)使用del-node命令来删除7006主节点。

cd /usr/local/redis/redis/src

./redis-trib.rb del-node 192.168.182.132:7006 52d169e7011ccdf10f99c1d83f92409dcc37ab55

删除成功:

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对爱安网的支持。

    无相关信息
最新资讯
分水岭时刻:科技四巨头CEO首次国会集体作证 各个击破or抱团取胜

分水岭时刻:科技四巨

未来几周,当亚马逊CEO杰夫•贝佐斯、苹果CEO蒂姆·库克
苹果公司想将iPhone打造成“身&份&证”

苹果公司想将iPhone打

据AppleInsider网站3日报道,苹果公司想将iPhone打造成
超800家公司联合抵制Facebook 要求平台控制仇恨言论

超800家公司联合抵制F

据Politico消息,全球800家公司从社交网络中撤出了数百
联合国报告:2030年全球电子废弃物将达7400万吨

联合国报告:2030年全球

联合国报告:2019年全球产生了5360万吨电子废弃物,预测20
云旅游从直播种草 走向杂草丛生

云旅游从直播种草 走

云旅游怎么变成这味儿了?
北京百度网讯科技有限公司被法(tian)院(ping)列为被执行人

北京百度网讯科技有限

天眼查数据显示,7月2日,北京百度网讯科技有限公司被北京
最新文章
从一个小需求感受Redis的独特魅力(需求设计)

从一个小需求感受Redi

Redis在实际应用中使用的非常广泛,本篇文章就从一个简
详解redis desktop manager安装及连接方式

详解redis desktop ma

这篇文章主要介绍了redis desktop manager安装及连接
Redis集群下过期key监听的实现代码

Redis集群下过期key监

这篇文章主要介绍了Redis集群下过期key监听的实现代码
Redis集群增加节点与删除节点的方法详解

Redis集群增加节点与

这篇文章主要给大家介绍了关于Redis集群增加节点与删
Linux 下redis5.0.0安装教程详解

Linux 下redis5.0.0安

这篇文章主要介绍了Linux 下redis5.0.0安装教程,本文图
Redis 实现“附近的人”功能

Redis 实现“附近的人

Redis基于geohash和有序集合提供了地理位置相关功能。