Redis集群环境中添加和删除节点

上一节中说道如何在window下面安装redis集群,今天给大家介绍一下如何在redis集群环境中添加和删除节点。

首先是配置六个节点,三个为从节点,三个为主节点。

配置信息如下所示:

port 6380      #端口号
loglevel notice     #日志的记录级别,notice是适合生产环境的
logfile "E:/softtools/redis-3.0.1/Logs/redis6380_log.txt"  #指定log的保持路径,默认是创建在Redis安装目录下,如果有
appendonly yes  #数据的保存为aof格式  
appendfilename "appendonly.6380.aof"     #数据保存文件
cluster-enabled yes        #是否开启集群                              
cluster-config-file nodes.6380.conf  
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

总共配置六个这样的文件,每个配置文件的端口地址等都不一样。

进入到redis安装目录之下,输入redis-server ./Logs/redis.6380.conf启动每个节点的服务

接下来就是创建集群:

在redis目录下面执行 gem install --local E:/softtools/redis-3.2.2.gem 命令。显示以下结果接说明安装Ruby成功

然后就可以输入创建节点到集群中的命令了,命令如下所示:

redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

出现这些信息就说明添加成功,系统会让我们是否确定集群,这里我们选择yes

这样redis的集群就搭建完毕了,这里我需要解释一下的是:

这里我没有设置任何的主从redis,为什么就可以自动实现了呢?其实猫腻是在redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385这个命令里面。

replicas 1其实就是设置了主从redis了,这里的1是指是后面所有的redis服务中有一半是主服务一半是从服务。至于谁是主的、谁是从的这个都是随机分配的。

replicas 0就表示设置的节点都是主节点,没有从节点

这样redis集群就已经设置好了,下面开始接受查询节点,添加节点,删除节点的操作

一.查询节点:

首先进入某个节点的客户端中,输入以下命令进入6380节点客户端中,命令:redis-cli -c -p 6380

其中cluster nodes命令就是查看所有节点信息,这里我们可以看到是三个master、三个slave节点。

二.添加节点:

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

在Logs配置文件目录下面创建redis.6386.conf配置文件,可以复制其它的配置文件,然后修改端口后和其它相应的内容。

配置文件信息如下所示:

port 6386
loglevel notice    
logfile "E:/softtools/redis-3.0.1/Logs/redis6386_log.txt" 
appendonly yes
appendfilename "appendonly.6386.aof"   
cluster-enabled yes                                    
cluster-config-file nodes.6386.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

2.通过上面说到的redis-server ./Logs/redis.6386.conf命令启动该服务

启动好之后会出现aof和conf这两个文件。

3.通过redis-trib.rb add-node 127.0.0.1:6386 127.0.0.1:6380 命令添加到redis集群环境中去。

这里需要注意的是:前面地址是新的添加的节点地址信息,后面是你想要复制的主节点信息,一定要是主节点才可以。

我当时犯了一个错误,就是在写了redis-trib.rb add-node 127.0.0.1:6386这样的命令,然后执行的时候一直报错,因为redis集群,在添加新的节点的时候必须要引用旧的主节点才可以。

然后可以输入cluster nodes查看节点是否添加成功。

从运行结果中可以看到,节点添加是成功的。但是节点还没分配槽给它,此时还不是可使用节点。

这里有两种选择,一种是变成从节点,一种是变成主节点

变成从节点比较简单,不需要重新分配槽。执行redis-cli -c -p 6386 cluster replicate d1feb9c8267f9b82f86db9b95bdc36c1ed28143e 命令就可以了,后面的d1feb9c8267f9b82f86db9b95bdc36c1ed28143e是主节点6380的ID号码

如果想要变成主节点就需要重新分配槽给这个新节点了。

执行 redis-trib.rb reshard 127.0.0.1:6380 命令这个主节点的IP只能是我们上面创建该节点时候跟着的旧节点的IP地址,否则错误。所以这里大家一定要注意。

这里系统会给我们选择移动槽的个数和移动给节点的ID号码,这里我设置的是移动1000,移动给新节点62aff61bb7ee6adb6131c2b0330545fd690b4843

输入all 表示从所有的主节点中随机转移,凑够1000个哈希槽,然后再输入yes,redis集群就开始分配哈希槽了。查看新节点槽分配情况,发现已经添加好了。

三.删除节点:

删除从节点的话,不需要清空槽,直接就可以删除

redis-trib.rb del-node 127.0.0.1:6386 62aff61bb7ee6adb6131c2b0330545fd690b4843

最后一个参数为需要删除节点的ID  

删除主节点的话,就需要先清空槽,然后重新分配给原先创建指定的那个节点,最后才能删除。

第一步先移动槽,上面我们分配给这个节点的槽是1000,这里我们也移动1000

redis-trib.rb reshard 127.0.0.1:6386

后面就是输入要分配给哪个节点的ID,这里我们上面是从6380节点分配过来的,所以我们就分配回去,改节点的ID为:62aff61bb7ee6adb6131c2b0330545fd690b4843,最后系统会让我们确实我们要移除节点的ID,这里我们写62aff61bb7ee6adb6131c2b0330545fd690b4843

最后就可以执行

redis-trib.rb del-node 127.0.0.1:6386 62aff61bb7ee6adb6131c2b0330545fd690b4843

命令来删除节点了,最后一个参数为需要删除的节点ID  

到这边关于redis集群节点的添加就介绍到这边了,如果对上面的内容还有什么疑义或者问题都可以加我QQ:208017534咨询。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

利用Apache ab以及GNUPlot来进行Web测试

最近写了几个测试脚本,希望要观察使用PUT方式上传文件和使用POST方式上传文件,两者效率的差别。

712
来自专栏LeoXu的博客

[转]RPM使用详解 来源:互联网 作者:佚名

在Linux 操作系统中,有一个系统软件包,它的功能类似于Windows里面的“添加/删除程序”,但是功能又比“添加/删除程序”强很多,它就是 Red Hat ...

692
来自专栏数据和云

浅谈TimesTen内存数据库的结构

作者介绍 ? 朱亮 云和恩墨技术专家,6年专职oracle dba生涯先后服务于保险、金融、电信、百货等客户 Oracle TimesTen In-Memor...

2998
来自专栏大数据平台TBDS

kafka如何彻底删除topic及数据

删除kafka topic及其数据,严格来说并不是很难的操作。但是,往往给kafka 使用者带来诸多问题。项目组之前接触过多个开发者,发现都会偶然出现无法彻底删...

2.4K7
来自专栏零基础使用Django2.0.1打造在线教育网站

利用Flask搭建微电影视频网站(四):后台页面搭建

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

2211
来自专栏小程序之家

如何实现小程序登录鉴权

为了方便用户使用小程序时,使用微信账号授权快速登录软件,微信小程序提供了相关的授权接口。小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快...

6813
来自专栏北京马哥教育

使用 nice、cpulimit 和cgroups 获取进程的 CPU 使用率

Linux内核是一个令人难以置信的马戏团的表演者,可以很小心的玩弄许多进程和它们的资源需求,来保证你的服务器一直嗡嗡作响。内核也是关于公平的一切:当有资源竞争时...

3164
来自专栏北京马哥教育

这些git技能够你用一年了

用git有一年了,下面是我这一年来的git使用总结,覆盖了日常使用中绝大多数的场景。嗯,至少是够用一年了,整理出来分享给大家,不明白的地方可以回复交流。 ---...

2767
来自专栏编程坑太多

Maven学习笔记四(坐标和依赖)

1294
来自专栏三丰SanFeng

分布式系统组件之配置中心

配置中心概述: 在分布式系统中,配置中心是一个基本的组件,它为散布在不同机器上的服务提供配置文件的通知,读取,更新服务,一般对配置中心的设计要点如下: 1) 配...

18110

扫码关注云+社区